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?)
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).
Looking forward to hearing from you!
With kind regards,
Martin
--
-----------------------------------------------------------
ir. Martin Fiers
Photonics Research Group
Universiteit Gent - Ghent University
Sint-Pietersnieuwstraat 41
9000 Gent - Belgium
T + 32 9 264 34 48
E martin.fi...@intec.ugent.be
W www.caphesim.com
-----------------------------------------------------------
from distutils.core import setup
from Cython.Build import cythonize
from distutils.extension import Extension
from Cython.Distutils import build_ext
import os
path = '.'
lib_name = 'complex_double'
full_file ='complex_double.pyx'
additional_include_directories = []
script_args = ["build_ext", "--build-lib", path]
def isWindows():
return os.name=='nt'
if(isWindows()):
script_args.append('--compiler=mingw32')
ext_module = Extension(lib_name,
sources=[full_file],
language="c++",
#extra_compile_args = ["-O0"] # Doesn't work? It just appends it, but we wish to replace it. During production, we want -O2/-O3 and -ffast-math to be enabled
extra_compile_args = ["-ffast-math", "-g"]
)
# FIXME: Find the proper way to pass these arguments.
ext_module.cython_gdb = True
#ext_module.cython_create_listing = True
setup(
name = "Cythonized module",
ext_modules = [ext_module],
cmdclass={'build_ext': build_ext},
script_args = script_args,
include_dirs = additional_include_directories,
)
import cython
@cython.cdivision(True)
cdef public double complex my_func(int a, b):
if(a==0):
return 1;
else:
return b;
def my_func_exposed(int a, b):
return my_func(a,b)
_______________________________________________
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel