← index #17817PR #18750
Likely Duplicate · medium · value 0.536
QUERY · ISSUE

Assertion error on invalid string to compile()

openby jepleropened 2025-08-02updated 2025-08-02
bug

Port, board and/or hardware

unix port, coverage variant, x86_64 linux

MicroPython version

MicroPython v1.26.0-preview.521.g658a2e3dbd on 2025-08-02; linux [GCC 12.2.0] version

Reproduction

>>> compile("a\\\n", "", "eval")
micropython: ../../py/emitbc.c:356: mp_emit_bc_end_pass: Assertion `emit->stack_size == 0' failed.

Expected behaviour

Should throw a SyntaxError

Observed behaviour

crashes with an assertion failure

Additional Information

This crash was found by aflplusplus and minimized manually.

Code of Conduct

Yes, I agree

CANDIDATE · PULL REQUEST

py/builtinevex: Add input validation to compile()

closedby bob10042opened 2026-01-30updated 2026-01-31

Fixes #17817

Problem:
compile() accepts non-string inputs for source, filename, and mode arguments without validation, leading to assertion failures or undefined behavior.

Solution:

  • Validate that source, filename, and mode are all strings
  • Raise TypeError with descriptive message for invalid types
  • Fail fast before attempting to use invalid inputs

Impact:

  • Prevents assertion failures from invalid compile() arguments
  • Provides clear error messages for misuse
  • Matches CPython's validation behavior

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