[Numpy-discussion] test_multiarray.TestIO.test_ascii segmentation fault with Python2.7

Pauli Virtanen pav+sp@iki...
Tue Dec 15 10:51:39 CST 2009


Tue, 15 Dec 2009 10:36:03 -0600, Bruce Southey wrote:
[clip]
> Program received signal SIGSEGV, Segmentation fault. setup_context
> (registry=<value optimized out>, module=<value optimized out>,
> lineno=<value optimized out>, filename=<value optimized out>,
> stack_level=<value optimized out>)
>      at Python/_warnings.c:449
> 449         PyFrameObject *f = PyThreadState_GET()->frame; (gdb) bt
> #0  setup_context (registry=<value optimized out>, module=<value
> optimized out>, lineno=<value optimized out>, filename=<value optimized
> out>, stack_level=<value optimized out>)
>      at Python/_warnings.c:449
> #1  do_warn (registry=<value optimized out>, module=<value optimized
> out>, lineno=<value optimized out>, filename=<value optimized out>,
> stack_level=<value optimized out>)
>      at Python/_warnings.c:593
> #2  0x0000000000493c81 in PyErr_WarnEx (category=0x760720, text=<value
> optimized out>, stack_level=1) at Python/_warnings.c:719 #3 
> 0x00000000004c8e94 in PyOS_ascii_strtod (nptr=0x7ffff7f08914 "1 , 2 , 3
> , 4", endptr=0x7fffffffdb28) at Python/pystrtod.c:282 #4 
> 0x00007ffff2954151 in NumPyOS_ascii_strtod (s=0x7ffff7f08914 "1 , 2 , 3
> , 4", endptr=0x7fffffffdb28) at numpy/core/src/multiarray/numpyos.c:527

Looks like it's trying to raise a deprecation warning after 
PyArray_FromString has released GIL. So that was the reason why it caused 
a segfault also in 3.1.

PyOS_ascii_strtod was deprecated in 2.7 and in 3.1. Apparently, we now 
*must* do something like 

#if PY_VERSION_HEX >= 0x02060000
    return PyOS_string_to_double(s, endptr, NULL);
#else
    return PyOS_ascii_strtod(s, endptr);
#endif

everywhere the function is used.

It also seems that this needs to be backported to Numpy 1.4.x...

(Note to self: this is also the origin of the crashes in scipy/
lambertw... GIL must be reacquired before raising any warnings.)

-- 
Pauli Virtanen



More information about the NumPy-Discussion mailing list