← index #17722Issue #18010
Related · high · value 2.809
QUERY · ISSUE

core: assertion error on syntactically invalid Python code

openby jepleropened 2025-07-20updated 2025-07-20
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)

closedby jepleropened 2025-08-30updated 2025-09-11
bug

Port, board and/or hardware

mpy-cross -march=rv32imc, x64 linux

MicroPython version

v1.27.0-preview-88-g704c70c5bb

Reproduction

  1. Put the following in crash.py:
@micropython.asm_rv32
def l():
    a=di(a2, a2, -1)
  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

Keyboard

j / / n
next pair
k / / p
previous pair
1 / / h
show query pane
2 / / l
show candidate pane
c
copy suggested comment
r
toggle reasoning
g i
go to index
?
show this help
esc
close overlays

press ? or esc to close

copied