[Numpy-discussion] Bus error when using flat on sliced, memmap'd array

Val Kalatsky kalatsky at gmail.com
Wed May 30 22:49:53 EDT 2012


Confirmed on Ubuntu, np.__version__ 1.5.1 and 1.6.1 (backtraces are
bellow).
Something seems to be broken before it comes to memcpy
and/or _aligned_contig_to_strided_size1.

Val

-------------------------------------------------------------

np.__version__ 1.6.1

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff5b63cdf in _aligned_contig_to_strided_size1 ()
   from
/home/vkalatsky/src/epd8/lib/python2.7/site-packages/numpy/core/multiarray.so
(gdb) bt
#0  0x00007ffff5b63cdf in _aligned_contig_to_strided_size1 ()
   from
/home/vkalatsky/src/epd8/lib/python2.7/site-packages/numpy/core/multiarray.so
#1  0x00007ffff5bc2c31 in PyArray_CopyAnyIntoOrdered ()
   from
/home/vkalatsky/src/epd8/lib/python2.7/site-packages/numpy/core/multiarray.so
#2  0x00007ffff5bc3329 in array_dealloc () from
/home/vkalatsky/src/epd8/lib/python2.7/site-packages/numpy/core/multiarray.so
#3  0x00007ffff71b7bbb in meth_dealloc (m=0xb6fdd0) at
Objects/methodobject.c:134
#4  0x00007ffff720df99 in PyEval_EvalFrameEx (f=0xc3f310, throwflag=<value
optimized out>) at Python/ceval.c:2712
#5  0x00007ffff7214722 in PyEval_EvalCodeEx (co=0x791d30, globals=<value
optimized out>, locals=<value optimized out>, args=0xab7fd0,
    argcount=5, kws=0xab7ff8, kwcount=0, defs=0x0, defcount=0, closure=0x0)
at Python/ceval.c:3253
#6  0x00007ffff72126b6 in call_function (f=0xab7e20, throwflag=<value
optimized out>) at Python/ceval.c:4109
#7  PyEval_EvalFrameEx (f=0xab7e20, throwflag=<value optimized out>) at
Python/ceval.c:2666
#8  0x00007ffff7214722 in PyEval_EvalCodeEx (co=0x7988b0, globals=<value
optimized out>, locals=<value optimized out>, args=0x3,
    argcount=1, kws=0x3, kwcount=0, defs=0x79c518, defcount=3, closure=0x0)
at Python/ceval.c:3253
#9  0x00007ffff72126b6 in call_function (f=0x6d0820, throwflag=<value
optimized out>) at Python/ceval.c:4109
#10 PyEval_EvalFrameEx (f=0x6d0820, throwflag=<value optimized out>) at
Python/ceval.c:2666
#11 0x00007ffff7214722 in PyEval_EvalCodeEx (co=0x7ffff7eb41b0,
globals=<value optimized out>, locals=<value optimized out>, args=0x0,
    argcount=0, kws=0x0, kwcount=0, defs=0x0, defcount=0, closure=0x0) at
Python/ceval.c:3253
#12 0x00007ffff7214772 in PyEval_EvalCode (co=0x7ffff7ff5000, globals=0x2,
locals=0x897cb1) at Python/ceval.c:667
#13 0x00007ffff722e432 in run_mod (mod=<value optimized out>,
filename=<value optimized out>, globals=0x640140, locals=0x640140,
    flags=<value optimized out>, arena=<value optimized out>) at
Python/pythonrun.c:1346
#14 0x00007ffff722e506 in PyRun_FileExFlags (fp=0x6cb390,
filename=0x7fffffffe599 "cf_test.py", start=257, globals=0x640140,
    locals=0x640140, closeit=1, flags=0x7fffffffe1a0) at
Python/pythonrun.c:1332
#15 0x00007ffff722fa67 in PyRun_SimpleFileExFlags (fp=<value optimized
out>, filename=0x7fffffffe599 "cf_test.py", closeit=1,
    flags=0x7fffffffe1a0) at Python/pythonrun.c:936
#16 0x00007ffff72401e2 in Py_Main (argc=1, argv=0x7fffffffe2c8) at
Modules/main.c:689
#17 0x00007ffff652cd8e in __libc_start_main (main=<value optimized out>,
argc=<value optimized out>, ubp_av=<value optimized out>,
    init=<value optimized out>, fini=<value optimized out>,
rtld_fini=<value optimized out>, stack_end=0x7fffffffe2b8)
    at libc-start.c:226
#18 0x00000000004006f9 in _start ()

-----------------------------------------------------------

np.__version__ 1.5.1

Program received signal SIGSEGV, Segmentation fault.
memcpy () at ../sysdeps/x86_64/memcpy.S:67
67 ../sysdeps/x86_64/memcpy.S: No such file or directory.
in ../sysdeps/x86_64/memcpy.S
(gdb) bt
#0  memcpy () at ../sysdeps/x86_64/memcpy.S:67
#1  0x00007ffff5bf2460 in PyArray_CopyAnyInto () from
/home/vkalatsky/epd70/lib/python2.7/site-packages/numpy/core/multiarray.so
#2  0x00007ffff5bf2a69 in array_dealloc () from
/home/vkalatsky/epd70/lib/python2.7/site-packages/numpy/core/multiarray.so
#3  0x00007ffff71b889b in meth_dealloc (m=0xbdd170) at
Objects/methodobject.c:134
#4  0x00007ffff720e8b9 in PyEval_EvalFrameEx (f=0xc12450, throwflag=<value
optimized out>) at Python/ceval.c:2711
#5  0x00007ffff7215042 in PyEval_EvalCodeEx (co=0x81e630, globals=<value
optimized out>, locals=<value optimized out>, args=0x7bd820,
    argcount=5, kws=0x7bd848, kwcount=0, defs=0x0, defcount=0, closure=0x0)
at Python/ceval.c:3252
#6  0x00007ffff7212fd6 in call_function (f=0x7bd670, throwflag=<value
optimized out>) at Python/ceval.c:4108
#7  PyEval_EvalFrameEx (f=0x7bd670, throwflag=<value optimized out>) at
Python/ceval.c:2665
#8  0x00007ffff7215042 in PyEval_EvalCodeEx (co=0x85f1b0, globals=<value
optimized out>, locals=<value optimized out>, args=0x3,
    argcount=1, kws=0x3, kwcount=0, defs=0x85e928, defcount=3, closure=0x0)
at Python/ceval.c:3252
#9  0x00007ffff7212fd6 in call_function (f=0x747ea0, throwflag=<value
optimized out>) at Python/ceval.c:4108
#10 PyEval_EvalFrameEx (f=0x747ea0, throwflag=<value optimized out>) at
Python/ceval.c:2665
#11 0x00007ffff7215042 in PyEval_EvalCodeEx (co=0x691b30, globals=<value
optimized out>, locals=<value optimized out>, args=0x0,
    argcount=0, kws=0x0, kwcount=0, defs=0x0, defcount=0, closure=0x0) at
Python/ceval.c:3252
#12 0x00007ffff7215092 in PyEval_EvalCode (co=0x7ffff7ff3000,
globals=0xb55550, locals=0x1) at Python/ceval.c:666
#13 0x00007ffff722eb82 in run_mod (mod=<value optimized out>,
filename=<value optimized out>, globals=0x640140, locals=0x640140,
    flags=<value optimized out>, arena=<value optimized out>) at
Python/pythonrun.c:1346
#14 0x00007ffff722ec56 in PyRun_FileExFlags (fp=0x743250,
filename=0x7fffffffe5bd "cf_test.py", start=257, globals=0x640140,
    locals=0x640140, closeit=1, flags=0x7fffffffe1c0) at
Python/pythonrun.c:1332
#15 0x00007ffff72301b7 in PyRun_SimpleFileExFlags (fp=<value optimized
out>, filename=0x7fffffffe5bd "cf_test.py", closeit=1,
    flags=0x7fffffffe1c0) at Python/pythonrun.c:936
#16 0x00007ffff724083a in Py_Main (argc=1, argv=0x7fffffffe2e8) at
Modules/main.c:676
#17 0x00007ffff652dd8e in __libc_start_main (main=<value optimized out>,
argc=<value optimized out>, ubp_av=<value optimized out>,
    init=<value optimized out>, fini=<value optimized out>,
rtld_fini=<value optimized out>, stack_end=0x7fffffffe2d8)
    at libc-start.c:226
#18 0x00000000004006f9 in _start ()


On Wed, May 30, 2012 at 9:05 PM, chris farrow <farrowch at gmail.com> wrote:

> Hi all,
>
> I encountered an odd bug today that I wanted to bring to everyone's
> attention. First the code:
>
> >>> import numpy as np
> >>> shape = (8, 8)
> >>> dtype = np.dtype(np.uint8)
> >>> image = np.random.randint(0, 256, shape).astype(dtype)
> >>> image.tofile("test_image.bin")
> >>> image = np.memmap("test_image.bin", dtype=dtype, shape=shape, mode='r')
> >>> arr = image[::2,::2]
> >>> np.sum(arr.flat)
>
> On my system (numpy 1.6.1, git
> revision 68538b74483009c2c2d1644ef00397014f95a696, on OSX, python 2.7.3
> (32-bit)), this causes a bus error when run.
>
> Here's what I've discovered so far about this:
> - the bus error only occurs with mode 'r'
> - the dimensionality of the array appears to be irrelevant
> - if the array slice does not change the strides, the bus error does not
> occur
> - no 'arr.flat', no bus error
> - Other aggregating functions (e.g. fmin.reduce) will induce the error
> - Iterating over arr.flat will *not* cause a bus error
>
> Based on this, I suspect the issue is with the C-facing side of the flat
> iterator.
>
> Enjoy!
>
> Chris
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20120530/d42b79b9/attachment.html>


More information about the NumPy-Discussion mailing list