QUERY · ISSUE
core: assertion error on syntactically invalid Python code
bug
Port, board and/or hardware
unix VARIANT=coverage
MicroPython version
MicroPython v1.26.0-preview.387.g67acac257f.dirty on 2025-07-19; linux [GCC 12.2.0] version
Reproduction
Run the following code:
def f(a, b): pass
f(None, x=b"", y:=True)
Expected behaviour
Code is rejected at byte-compile time similar to Python:
File "/tmp/qstrcrash.py", line 2
f(None, x=b"", y:=True)
^
SyntaxError: positional argument follows keyword argument
Observed behaviour
The file byte-compiles but an assertion error occurs when executing the call to f:
micropython: ../../py/qstr.c:198: find_qstr: Assertion `*q < pool->len' failed.
Additional Information
This is a minimized test case based on a crash found by fuzzing micropython
Code of Conduct
Yes, I agree
CANDIDATE · ISSUE
Assertion failure compiling invalid assembler code (should raise SyntaxError)
bug
Port, board and/or hardware
mpy-cross -march=rv32imc, x64 linux
MicroPython version
v1.27.0-preview-88-g704c70c5bb
Reproduction
- Put the following in
crash.py:
@micropython.asm_rv32
def l():
a=di(a2, a2, -1)
- Run
mpy-cross -march=rv32imc crash.py
Expected behaviour
The invalid form of assembler line is rejected with a SyntaxError or other Python exception.
Observed behaviour
An assertion error occurs:
mpy-cross: ../py/compile.c:3280: void compile_scope_inline_asm(compiler_t *, scope_t *, pass_kind_t): Assertion `MP_PARSE_NODE_IS_STRUCT(pns2->nodes[0])' failed.
Additional Information
This is a minimized version of a test case found by fuzzing mpy-cross with AFLPlusPlus.
Code of Conduct
Yes, I agree