[Cython] Bug: Returning real value crashes the code, complex value does not

Robert Bradshaw robertwb at gmail.com
Tue Mar 26 18:48:43 CET 2013


On Tue, Mar 26, 2013 at 2:52 AM, Martin Fiers
<Martin.Fiers at intec.ugent.be> wrote:
> Dear Cython developers,
>
> I stumbled upon a strange error when using Cython. I made a minimal working
> example, see attachment for the two necessary files. (btw I didn't find the
> e-mail address of Robert Bradshaw so I could not request him for an account
> on the issue tracker. Is it possible to put the bug on there?)

Sure. You should have my email now.

> To reproduce the bug:
> 1) Reboot to Windows :) (the bug only appears on Windows)
> 2) Run compile_bug.py to generate the Cython extension
> 3) Try to run the my_func_exposed function:
>
> python
>>>> import complex_double
> (does not crash)
>>>> complex_double.my_func_exposed(1,1j)
> (crashes)
>>>> complex_double.my_func_exposed(1,1)
>
> If I put a breakpoint in the code with gdb, jump in the code, and leave the
> function again, it does not crash! Also, it is no problem on Linux.
>
> It has to do with the fact that in the first case, a real value was used. In
> the complex-value case, it does not crash. I went through the generated cpp
> file and I don't see any issues there (the reason I use cpp is because it's
> in a big project that needs cpp enabled; it is further linked and so on).
>
> gcc version used: 4.6.2 (mingw)
> cython version used: 0.18 (I did pip install Cython)
> python version used: python 2.7.3 (MSC v.1500 32 bit).

Very strange. Does calling PyComplex_AsCComplex directly produce the
same crash? What about

    cdef complex double x = 1.0

or

    cdef object py_x = 1.0
    cdef complex double x = py_x

?

- Robert


More information about the cython-devel mailing list