[SciPy-Dev] Weird segfault in call to PyArray_SIZE

Christoph Gohlke cgohlke at uci.edu
Mon Jun 26 13:04:39 EDT 2017



On 6/25/2017 2:08 PM, Jaime Fernández del Río wrote:
> While working in scipy.ndimage I tried to replace the following code, 
> see here 
> <https://github.com/scipy/scipy/blob/master/scipy/ndimage/src/ni_support.c#L95> for 
> the source:
> 
> npy_intp max_lines;
> int ii;
> 
> for (ii = 0; ii < array->nd; ii++)
>      max_lines *= array->dimensions[ii];
> 
> with the in theory equivalent:
> 
> max_lines = PyArray_SIZE(array);
> 
> Oddly enough, the result is a segfault as soon as PyArray_SIZE is 
> called, e.g. by running the ndimage tests.
> 
> Both numpy and scipy are the latest development versions, built by 
> myself on OSX. Unfortunately I don't have Python and friends built with 
> debug symbols, so the best I have been able to figure out, through 
> printf debugging, is that the segfault happens before 
> PyArray_MultiplyList is entered, which made me suspicious of it 
> being related to import_array() not being called, but that doesn't seem 
> to be the case.
> 
> Any thoughts on what may be causing this?
> 
> Jaime
> 

On Windows the proposed change throws a link error:

ni_support.obj : error LNK2001: unresolved external symbol PyArray_API

Christoph


More information about the SciPy-Dev mailing list