[pypy-dev] Bug report: AST stage crash in PyPy3.5

Carl Friedrich Bolz-Tereick cfbolz at gmx.de
Sat Jul 28 08:08:43 EDT 2018


Hi!

Thanks for the report! I fixed this in 179c172169f1.

Cheers,

Carl Friedrich

On 27/07/18 12:18, hubo wrote:
> In PyPy 3.5, the following small piece of code cannot be imported, and 
> causes a SystemError:
> def test(*a: lambda x: None):
>      pass
> Stderr:
> # pypy3 test.py
> RPython traceback:
>    File "pypy_interpreter.c", line 33969, in BuiltinCode_funcrun_obj
>    File "pypy_module___builtin__.c", line 2705, in compile
>    File "pypy_interpreter.c", line 50963, in PythonAstCompiler__compile_ast
>    File "pypy_interpreter_astcompiler.c", line 1543, in compile_ast
>    File "pypy_interpreter_astcompiler.c", line 5995, in Module_walkabout
>    File "pypy_interpreter_astcompiler.c", line 13362, in 
> PythonCodeGenerator__handle_body
>    File "pypy_interpreter_astcompiler_2.c", line 20473, in 
> PythonCodeGenerator_visit_FunctionDef
>    File "pypy_interpreter_astcompiler_2.c", line 37632, in 
> _visit_function__FunctionCodeGenerator
>    File "pypy_interpreter_astcompiler_2.c", line 61299, in 
> _visit_annotations__pypy_interpreter_astcompiler_1
>    File "pypy_interpreter_astcompiler_3.c", line 8128, in 
> PythonCodeGenerator__visit_arg_annotation
>    File "pypy_interpreter_astcompiler_2.c", line 22498, in 
> PythonCodeGenerator_visit_Lambda
>    File "pypy_interpreter_astcompiler_2.c", line 35719, in 
> PythonCodeGenerator_sub_scope
>    File "pypy_interpreter_astcompiler.c", line 11371, in 
> PythonCodeGenerator___init__
> SystemError: unexpected internal exception (please report a bug): 
> <KeyError object at 0x7efeb2749d20>; internal traceback was dumped to stderr
> The crash appears when:
> 
>  1. A varaible argument of a function has an annotation (like *args or
>     **kwargs, normal arguments are not affected), and
>  2. A lambda expression is used in the annotation
> 
> Both criterias must be met.
> This cannot be reproduced on CPython3.5+. Also, Python document says:
> 
>     Parameters may have annotations of the form “|:expression|”
>     following the parameter name. Any parameter may have an annotation
>     even those of the form|*identifier|or|**identifier|. Functions may
>     have “return” annotation of the form “|->expression|” after the
>     parameter list. These annotations can be any valid Python
>     expression. The presence of annotations does not change the
>     semantics of a function. The annotation values are available as
>     values of a dictionary keyed by the parameters’ names in
>     the|__annotations__|attribute of the function object.
> 
> Mutiple versions of PyPy 3.5 have this bug,  including 5.8, 5.10 and 6.0
> 2018-07-27
> ------------------------------------------------------------------------
> hubo
> 
> 
> _______________________________________________
> pypy-dev mailing list
> pypy-dev at python.org
> https://mail.python.org/mailman/listinfo/pypy-dev
> 



More information about the pypy-dev mailing list