8000 Segfault when constructing an array from a "bad" class · Issue #7264 · numpy/numpy · GitHub
[go: up one dir, main page]

Skip to content
Segfault when constructing an array from a "bad" class #7264
Closed
@anntzer

Description

@anntzer
In [1]: class C:
    def __getitem__(self, i): raise IndexError
    def __len__(self): return 42
   ...: 

In [2]: np.array(C())
Fatal Python error: Segmentation fault

A bit contrieved; on the other hand you can imagine hitting an IndexError in some nested function called by __getitem__ accidentally bubbling up.

EDITED: gdb backtrace:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff6132bae in PyArray_DTypeFromObjectHelper (obj=obj@entry=<C at remote 0x7ffff66cf898>, maxdims=maxdims@entry=32, out_dtype=out_dtype@entry=0x7fffffffd478, 
    string_type=string_type@entry=0) at numpy/core/src/multiarray/common.c:538
538             if (Py_TYPE(objects[i]) != common_type) {
(gdb) bt
#0  0x00007ffff6132bae in PyArray_DTypeFromObjectHelper (obj=obj@entry=<C at remote 0x7ffff66cf898>, maxdims=maxdims@entry=32, out_dtype=out_dtype@entry=0x7fffffffd478, 
    string_type=string_type@entry=0) at numpy/core/src/multiarray/common.c:538
#1  0x00007ffff6132e63 in PyArray_DTypeFromObject (obj=obj@entry=<C at remote 0x7ffff66cf898>, maxdims=maxdims@entry=32, out_dtype=out_dtype@entry=0x7fffffffd478)
    at numpy/core/src/multiarray/common.c:184
#2  0x00007ffff613c7a5 in PyArray_GetArrayParamsFromObject (op=<C at remote 0x7ffff66cf898>, requested_dtype=<optimized out>, writeable=<optimized out>, 
    out_dtype=0x7fffffffd478, out_ndim=0x7fffffffd46c, out_dims=0x7fffffffd480, out_arr=0x7fffffffd470, context=0x0) at numpy/core/src/multiarray/ctors.c:1560
#3  0x00007ffff613cb7d in PyArray_FromAny (op=op@entry=<C at remote 0x7ffff66cf898>, newtype=0x0, min_depth=0, max_depth=0, flags=flags@entry=112, context=<optimized out>)
    at numpy/core/src/multiarray/ctors.c:1692
#4  0x00007ffff613ceff in PyArray_CheckFromAny (op=<C at remote 0x7ffff66cf898>, descr=<optimized out>, min_depth=min_depth@entry=0, max_depth=max_depth@entry=0, 
    requires=112, context=context@entry=0x0) at numpy/core/src/multiarray/ctors.c:1870
#5  0x00007ffff61c2d25 in _array_fromobject (__NPY_UNUSED_TAGGEDignored=<optimized out>, args=<optimized out>, kws=0x0) at numpy/core/src/multiarray/multiarraymodule.c:1714
#6  0x00007ffff79bcaa9 in PyCFunction_Call () from /usr/lib/libpython3.5m.so.1.0
#7  0x00007ffff7a34a01 in PyEval_EvalFrameEx () from /usr/lib/libpython3.5m.so.1.0
#8  0x00007ffff7a35df2 in ?? () from /usr/lib/libpython3.5m.so.1.0
#9  0x00007ffff7a35ed3 in PyEval_EvalCodeEx () from /usr/lib/libpython3.5m.so.1.0
#10 0x00007ffff7a35efb in PyEval_EvalCode () from /usr/lib/libpython3.5m.so.1.0
#11 0x00007ffff7a55074 in ?? () from /usr/lib/libpython3.5m.so.1.0
#12 0x00007ffff7a57585 in PyRun_FileExFlags () from /usr/lib/libpython3.5m.so.1.0
#13 0x00007ffff7a576f6 in PyRun_SimpleFileExFlags () from /usr/lib/libpython3.5m.so.1.0
#14 0x00007ffff7a6e504 in Py_Main () from /usr/lib/libpython3.5m.so.1.0
#15 0x0000000000400af7 in main ()

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0