2011/3/23 René Rex <[email protected]>:
> Hello
>
> The attached code creates a segfault with Cython 0.14.1. A workaround
> is to use a real function instead of lambda. Using the normal python
> interpreter the same code works flawlessly.
>
> Here are my build commands:
>
> cython --embed vectorizeBug.pyx
> gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O0 -Wall -fPIC
> -lpython2.6 -I/usr/include/python2.6 -o vectorizeBug vectorizeBug.c
>
> --
> René Rex
> TU Braunschweig
> Bioinformatics & Biochemistry
> Langer Kamp 19 b
> 38106 Braunschweig
> Phone: +49-531-391-8315
>
This is simplified code that segfaults too:
def f():
return lambda x=0: x
f()()
Also I found that this code doesn't even compiles:
# Module level lambda with default argument value
lambda x=0: x
File "../cython.py", line 8, in <module>
main(command_line = 1)
File "/home/vitja/tmp/cython-my-git/Cython/Compiler/Main.py", line
818, in main
result = compile(sources, options)
File "/home/vitja/tmp/cython-my-git/Cython/Compiler/Main.py", line
793, in compile
return compile_multiple(source, options)
File "/home/vitja/tmp/cython-my-git/Cython/Compiler/Main.py", line
765, in compile_multiple
result = run_pipeline(source, options)
File "/home/vitja/tmp/cython-my-git/Cython/Compiler/Main.py", line
629, in run_pipeline
err, enddata = context.run_pipeline(pipeline, source)
File "/home/vitja/tmp/cython-my-git/Cython/Compiler/Main.py", line
248, in run_pipeline
data = phase(data)
File "/home/vitja/tmp/cython-my-git/Cython/Compiler/Main.py", line
571, in parse
tree = context.parse(source_desc, scope, pxd = 0, full_module_name
= full_module_name)
File "/home/vitja/tmp/cython-my-git/Cython/Compiler/Main.py", line
510, in parse
tree = Parsing.p_module(s, pxd, full_module_name)
File "/home/vitja/tmp/cython-my-git/Cython/Compiler/Parsing.py",
line 2816, in p_module
body = p_statement_list(s, Ctx(level = level), first_statement = 1)
File "/home/vitja/tmp/cython-my-git/Cython/Compiler/Parsing.py",
line 1778, in p_statement_list
stats.append(p_statement(s, ctx, first_statement = first_statement))
File "/home/vitja/tmp/cython-my-git/Cython/Compiler/Parsing.py",
line 1771, in p_statement
s, ctx, first_statement = first_statement)
File "/home/vitja/tmp/cython-my-git/Cython/Compiler/Parsing.py",
line 1632, in p_simple_statement_list
stat = p_simple_statement(s, first_statement = first_statement)
File "/home/vitja/tmp/cython-my-git/Cython/Compiler/Parsing.py",
line 1626, in p_simple_statement
node = p_expression_or_assignment(s)
File "/home/vitja/tmp/cython-my-git/Cython/Compiler/Parsing.py",
line 1049, in p_expression_or_assignment
expr_list = [p_testlist_star_expr(s)]
File "/home/vitja/tmp/cython-my-git/Cython/Compiler/Parsing.py",
line 1005, in p_testlist_star_expr
expr = p_test_or_starred_expr(s)
File "/home/vitja/tmp/cython-my-git/Cython/Compiler/Parsing.py",
line 191, in p_test_or_starred_expr
return p_test(s)
File "/home/vitja/tmp/cython-my-git/Cython/Compiler/Parsing.py",
line 121, in p_test
return p_lambdef(s)
File "/home/vitja/tmp/cython-my-git/Cython/Compiler/Parsing.py",
line 101, in p_lambdef
s, terminator=':', annotated=False)
File "/home/vitja/tmp/cython-my-git/Cython/Compiler/Parsing.py",
line 2612, in p_varargslist
annotated = annotated)
File "/home/vitja/tmp/cython-my-git/Cython/Compiler/Parsing.py",
line 2261, in p_c_arg_list
annotated = annotated))
File "/home/vitja/tmp/cython-my-git/Cython/Compiler/Parsing.py",
line 2307, in p_c_arg_decl
if 'pxd' in s.level:
AttributeError: 'PyrexScanner' object has no attribute 'level'
--
vitja.
_______________________________________________
cython-devel mailing list
[email protected]
http://mail.python.org/mailman/listinfo/cython-devel