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

Reply via email to