Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Numpy.count_nonzero crashes on 64 bit windows platform

I have a piece of code which runs fine on my linux system but when I let a colleague run it on his windows system it just crashes python. I have been able to narrow it down to a problem with the Numpy function of non_zero but I was wondering if anyone has any idea why this crashes?

Code Snippet (enough to crash 64 bit python 2.7.3)

import numpy as np
data = np.zeros(2500,dtype='float32, (25000,2)float32')
""" The following 3 lines are not necessary but asking for the amount
of non_zeros in an array filled with zeros feels 'silly'
"""
data[0][0] = 1
data[0][1][0] = 2
data[0][1][1] = 3
time_elements = np.count_nonzero(data)

I am most likely going to file a bug-report with the people from NumPy so I would appreciate that if people who can recreate this system specify what versions/system they used to recreate it.

PS: The numpy that is installed is a 64 bit version taken from http://www.lfd.uci.edu/~gohlke/pythonlibs

like image 606
Bas Jansen Avatar asked Apr 07 '26 11:04

Bas Jansen


1 Answers

This is a NumPy bug; it doesn't look like platform is relevant. VOID_nonzero from numpy/core/src/multiarray/arraytypes.c.src is calling itself recursively until it runs out of stack space (over 87000 stack frames on my system):

#0  0x00002aaaaab98a4a in ?? ()
   from /opt/.../python/2.7.3/lib64/libpython2.7.so.1.0
#1  0x00002aaaaab9b2a4 in ?? ()
   from /opt/.../python/2.7.3/lib64/libpython2.7.so.1.0
#2  0x00002aaaaab9b6bd in _PyArg_ParseTuple_SizeT ()
   from /opt/.../python/2.7.3/lib64/libpython2.7.so.1.0
#3  0x00002aaaae7f7b72 in VOID_nonzero (ip=0x2aaab2d623f4 "", 
    ap=<value optimized out>)
    at numpy/core/src/multiarray/arraytypes.c.src:2345
#4  0x00002aaaae7f7bc7 in VOID_nonzero (ip=0x2aaab2d623f0 "", 
    ap=0x7fffff3ff118) at numpy/core/src/multiarray/arraytypes.c.src:2363
[...]
#87292 0x00002aaaae7f7bc7 in VOID_nonzero (ip=0x2aaab2d0d010 "", 
    ap=0x7fffff3ff118) at numpy/core/src/multiarray/arraytypes.c.src:2363
#87293 0x00002aaaae7cce87 in reduce_count_nonzero_loop (iter=0xbcc670, 
    dataptr=0xbcc770, strides=0xbcc760, countptr=0xbcc738, 
    iternext=0x2aaaae7beb60 <npyiter_buffered_reduce_iternext_iters2>, 
    needs_api=0, skip_first_count=0, data=0x2aaaae7f7ac0)
    at numpy/core/src/multiarray/item_selection.c:2127
#87294 0x00002aaaae8180f1 in PyArray_ReduceWrapper (operand=0xa099d7, out=0x0, 
    wheremask=<value optimized out>, operand_dtype=0xa04ce8, 
    result_dtype=<value optimized out>, casting=NPY_SAME_KIND_CASTING, 
    axis_flags=0x7fffffffcb90 "\001\024`", reorderable=1, skipna=0, 
    skipwhichna=0x0, keepdims=0, subok=0, 
    assign_identity=0x2aaaae811500 <assign_reduce_identity_zero>, 
    loop=0x2aaaae7ccdd0 <reduce_count_nonzero_loop>, 
    masked_loop=0x2aaaae7f8c00 <reduce_count_nonzero_masked_loop>, 
    advanced_masked_loop=0, data=0x2aaaae7f7ac0, buffersize=0, 
    funcname=0x2aaaae85fa61 "count_nonzero")
    at numpy/core/src/multiarray/reduction.c:1000
#87295 0x00002aaaae827c6e in PyArray_ReduceCountNonzero (
    __NPY_UNUSED_TAGGEDself=<value optimized out>, args=<value optimized out>, 
    kwds=<value optimized out>)
    at numpy/core/src/multiarray/item_selection.c:2218
#87296 array_count_nonzero (__NPY_UNUSED_TAGGEDself=<value optimized out>, 
    args=<value optimized out>, kwds=<value optimized out>)
    at numpy/core/src/multiarray/multiarraymodule.c:2091
#87297 0x00002aaaaab8cd14 in PyEval_EvalFrameEx ()
   from /opt/.../python/2.7.3/lib64/libpython2.7.so.1.0
#87298 0x00002aaaaab8e4c2 in PyEval_EvalCodeEx ()
   from /opt/.../python/2.7.3/lib64/libpython2.7.so.1.0
#87299 0x00002aaaaab8e512 in PyEval_EvalCode ()
   from /opt/.../python/2.7.3/lib64/libpython2.7.so.1.0
#87300 0x00002aaaaaba7ff2 in ?? ()
   from /opt/.../python/2.7.3/lib64/libpython2.7.so.1.0
#87301 0x00002aaaaaba81ea in PyRun_StringFlags ()
   from /opt/.../python/2.7.3/lib64/libpython2.7.so.1.0
#87302 0x00002aaaaaba93b0 in PyRun_SimpleStringFlags ()
   from /opt/.../python/2.7.3/lib64/libpython2.7.so.1.0
#87303 0x00002aaaaabb9a26 in Py_Main ()
   from /opt/.../python/2.7.3/lib64/libpython2.7.so.1.0
#87304 0x00000036c961d994 in __libc_start_main () from /lib64/libc.so.6
#87305 0x0000000000400649 in _start ()

The locals are:

    key = 0xa82d00
    value = 0xa05f80
    savedflags = 1287
    new = 0xa04c90
    title = 0x7fffff3ff800
    offset = 2
    pos = 2
    i = <value optimized out>
    len = <value optimized out>
like image 188
ecatmur Avatar answered Apr 09 '26 23:04

ecatmur