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

Martin Fiers Martin.Fiers at intec.ugent.be
Wed Mar 27 01:12:13 CET 2013


On 3/26/2013 6:48 PM, Robert Bradshaw wrote:
> 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.
Thank you! I just sent a mail.

Also, thanks for replying so quickly. Replies follow inline.
>
>> 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
I'm not sure how to call this directly. Do you mean by modifying the 
generated cpp file and then manually building an extension module?
>
>      cdef complex double x = 1.0
This one works.
>
> or
>
>      cdef object py_x = 1.0
>      cdef complex double x = py_x
This one crashes!

Regards,
Martin
> ?
>
> - Robert
> _______________________________________________
> cython-devel mailing list
> cython-devel at python.org
> http://mail.python.org/mailman/listinfo/cython-devel


-- 
-----------------------------------------------------------

ir. Martin Fiers

Photonics Research Group
Universiteit Gent - Ghent University

Sint-Pietersnieuwstraat 41
9000 Gent - Belgium

T + 32 9 264 34 48
E martin.fiers at intec.ugent.be
W www.caphesim.com

-----------------------------------------------------------



More information about the cython-devel mailing list