On Wed, Mar 27, 2013 at 2:44 AM, Martin Fiers <martin.fi...@intec.ugent.be> wrote: > On 3/27/2013 3:54 AM, Robert Bradshaw wrote: >> >> On Tue, Mar 26, 2013 at 5:12 PM, Martin Fiers >> <martin.fi...@intec.ugent.be> wrote: >>> >>> On 3/26/2013 6:48 PM, Robert Bradshaw wrote: >>>> >>>> On Tue, Mar 26, 2013 at 2:52 AM, Martin Fiers >>>> <martin.fi...@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! >> >> Ah. Try >> >> from cpython.complex cimport Py_complex, PyComplex_AsCComplex >> cdef Py_complex x = PyComplex_AsCComplex(py_x) >> print x.real, x.imag > > Ok. I tried this, and it also crashes. Here's the modification: > > from cpython.complex cimport Py_complex > from cpython.complex cimport PyComplex_AsCComplex > > @cython.cdivision(True) > cdef public double complex my_func(int a, b): > > cdef object py_x = 1.0 > > #cdef double complex x = 1.0 # Does not crash > #cdef double complex x2 = py_x # Crashes for py_x = 1, > not for py_x=1j. > #cdef Py_complex x = PyComplex_AsCComplex(py_x) # Crashes, even for > py_x=1j > #print x.real, x.imag > > And as you can see, the PyComplex_AsCComplex also crashes (SIGSEGV). > I tried to compile with debug information, as in the instructions in > http://docs.cython.org/src/userguide/debugging.html > But I cannot get the line numbers. Probably I need a debug-python version, > but that seems to be very nontrivial on Windows. > > Not sure if I can think of other options to test it and/or track down the > bug... > > Now it even crashes when py_x = 1j. So maybe there's something else going > wrong here too.
I wonder if it's a compiler miss-match or something like that. > Regards, > Martin > > P.S. I only replied to you because you didn't put the > cython-devel@python.org in the previous mail. Oops. Un-intentional oversight. _______________________________________________ cython-devel mailing list cython-devel@python.org http://mail.python.org/mailman/listinfo/cython-devel