Open
Description
Summary
I tried to run scrapscript.py with RustPython. It crashed. I reduced the input code with CReduce and then manually from ~4k lines to 21 lines.
Expected
No crash. In the full example, I expect the test suite to run. In the reduced example I expect nothing to happen.
Actual
# scrapscript.py
class LeftParen:
pass
class RightParen:
pass
class Lexer:
def read_char(self) :
return None
def read_one(self) :
while self:
c = self.read_char()
break
else:
return x
{
"(": LeftParen,
")": RightParen}
def tokenize():
lexer = Lexer()
while (lexer.read_one()) :
pass
tokenize()
cedar% rustpython scrapscript.py test
[vm/src/frame.rs:1942] self = ExecutingFrame {
code: code: <code object read_one at ??? file "scrapscript.py", line 8>,
state: FrameState {
stack: [
[PyObject PyStr { value: "(", kind: Ascii, hash: -1 }],
[PyObject [PyType LeftParen]],
[PyObject PyStr { value: ")", kind: Ascii, hash: -1 }],
],
blocks: [],
lasti: 16,
},
}
thread 'main' panicked at vm/src/frame.rs:1943:9:
tried to push value onto stack but overflowed max_stackdepth
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
cedar%