Skip to content

TestDataFrame.test_from_records_sequencelike: segfault on armel #4473

Closed
@yarikoptic

Description

@yarikoptic

gory details

Starting program: /usr/bin/python2.7-dbg /usr/bin/nosetests -s -v -a \!network pandas/tests/test_frame.py:TestDataFrame.test_from_records_sequencelike
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabi/libthread_db.so.1".

Program received signal SIGILL, Illegal instruction.

Program received signal SIGILL, Illegal instruction.

test_from_records_sequencelike (pandas.tests.test_frame.TestDataFrame) ...
Program received signal SIGSEGV, Segmentation fault.
0xb59b5478 in __pyx_pf_6pandas_3lib_122is_string_array (__pyx_self=0x0, __pyx_v_values=0x1727668) at pandas/lib.c:32348
32348         __Pyx_INCREF((PyObject*)__pyx_t_3);

(gdb) bt
#0  0xb59b5478 in __pyx_pf_6pandas_3lib_122is_string_array (__pyx_self=0x0, __pyx_v_values=0x1727668) at pandas/lib.c:32348
#1  0xb59b4248 in __pyx_pw_6pandas_3lib_123is_string_array (__pyx_self=0x0, __pyx_v_values=<numpy.ndarray at remote 0x1727668>) at pandas/lib.c:32136
#2  0x0009e498 in PyCFunction_Call (func=<built-in function is_string_array>, arg=(<numpy.ndarray at remote 0x1727668>,), kw=0x0) at ../Objects/methodobject.c:101
#3  0x0002e178 in PyObject_Call (func=<built-in function is_string_array>, arg=(<numpy.ndarray at remote 0x1727668>,), kw=0x0) at ../Objects/abstract.c:2529
#4  0xb59abe48 in __pyx_pf_6pandas_3lib_108infer_dtype (__pyx_self=0x0, __pyx_v__values=<numpy.ndarray at remote 0x1727668>) at pandas/lib.c:30465
#5  0xb59a81d8 in __pyx_pw_6pandas_3lib_109infer_dtype (__pyx_self=0x0, __pyx_v__values=<numpy.ndarray at remote 0x1727668>) at pandas/lib.c:29761
#6  0x00152aa4 in call_function (pp_stack=0xbeffaa74, oparg=1) at ../Python/ceval.c:4009
#7  0x0014d524 in PyEval_EvalFrameEx (
    f=Frame 0x12bf850, for file /home/yoh/pandas/pandas-0.12.0/pandas/core/common.py, line 1220, in _possibly_cast_to_datetime (value=<numpy.ndarray at remote 0x1727668>, dtype=None, coerce=False, v=<numpy.ndarray at remote 0x1727668>), throwflag=0) at ../Python/ceval.c:2666

python backtrace

(gdb) py-bt
#7 Frame 0x12bf850, for file /home/yoh/pandas/pandas-0.12.0/pandas/core/common.py, line 1220, in _possibly_cast_to_datetime (value=<numpy.ndarray at remote 0x1727668>, dtype=None, coerce=False, v=<numpy.ndarray at remote 0x1727668>)
    inferred_type = lib.infer_dtype(v)
#11 Frame 0x12a37b0, for file /home/yoh/pandas/pandas-0.12.0/pandas/core/series.py, line 3318, in _try_cast (arr=<numpy.ndarray at remote 0x1727668>, take_fast_path=True)
    arr = com._possibly_cast_to_datetime(arr, dtype)
#15 Frame 0x115d810, for file /home/yoh/pandas/pandas-0.12.0/pandas/core/series.py, line 3349, in _sanitize_array (data=<numpy.ndarray at remote 0x1727668>, index=<Int64Index(name=None) at remote 0x17289d8>, dtype=None, copy=False, raise_cast_failure=False, _try_cast=<function at remote 0x1728a30>, subarr=<numpy.ndarray at remote 0x1727668>)
    subarr = _try_cast(data, True)
#19 Frame 0x17579c0, for file /home/yoh/pandas/pandas-0.12.0/pandas/core/frame.py, line 5936, in _homogenize (data=[<numpy.ndarray at remote 0x1723ea8>, <numpy.ndarray at remote 0x1723f68>, <numpy.ndarray at remote 0x17273e8>, <numpy.ndarray at remote 0x1727668>, <numpy.ndarray at remote 0x17271a8>, <numpy.ndarray at remote 0x17274e8>, <numpy.ndarray at remote 0x1727228>, <numpy.ndarray at remote 0x17270e8>], index=<Int64Index(name=None) at remote 0x17289d8>, dtype=None, _sanitize_array=<function at remote 0x10f1b90>, oindex=None, homogenized=[<numpy.ndarray at remote 0x1723ea8>, <numpy.ndarray at remote 0x1723f68>, <numpy.ndarray at remote 0x17273e8>], v=<numpy.ndarray at remote 0x1727668>)
    raise_cast_failure=False)
#23 Frame 0x17571e0, for file /home/yoh/pandas/pandas-0.12.0/pandas/core/frame.py, line 5675, in _arrays_to_mgr (arrays=[<numpy.ndarray at remote 0x1723ea8>, <numpy.ndarray at remote 0x1723f68>, <numpy.ndarray at remote 0x17273e8>, <numpy.ndarray at remote 0x1727668>, <numpy.ndarray at remote 0x17271a8>, <numpy.ndarray at remote 0x17274e8>, <numpy.ndarray at remote 0x1727228>, <numpy.ndarray at remote 0x17270e8>], arr_names=<Index(name=None) at remote 0x17286c0>, index=<Int64Index(name=None) at remote 0x17289d8>, columns=<...>, dtype=None)
    arrays = _homogenize(arrays, index, dtype)
#27 Frame 0x17ce8a0, for file /home/yoh/pandas/pandas-0.12.0/pandas/core/frame.py, line 1124, in from_records (cls=<type at remote 0x129f680>, data=<recarray at remote 0x165dc40>, index=None, exclude=set([]), columns=<Index(name=None) at remote 0x17286c0>, coerce_float=False, nrows=None, arr_columns=<...>, arrays=[<numpy.ndarray at remote 0x1723ea8>, <numpy.ndarray at remote 0x1723f68>, <numpy.ndarray at remote 0x17273e8>, <numpy.ndarray at remote 0x1727668>, <numpy.ndarray at remote 0x17271a8>, <numpy.ndarray at remote 0x17274e8>, <numpy.ndarray at remote 0x1727228>, <numpy.ndarray at remote 0x17270e8>], result_index=None)
    columns)

and here what I think was original/generated code

(gdb) bt 1
#0  0xb59b5478 in __pyx_pf_6pandas_3lib_122is_string_array (__pyx_self=0x0, __pyx_v_values=0x1727668) at pandas/lib.c:32348
(More stack frames follow...)
(gdb) l 32335
32330         /* "pandas/src/inference.pyx":230
32331    * 
32332    *         for i in range(n):
32333    *             if not PyString_Check(objbuf[i]):             # <<<<<<<<<<<<<<
32334    *                 return False
32335    *         return True
32336    */
32337         __pyx_t_13 = __pyx_v_i;
32338         __pyx_t_8 = -1;
32339         if (__pyx_t_13 < 0) {
(gdb) 
32340           __pyx_t_13 += __pyx_pybuffernd_objbuf.diminfo[0].shape;
32341           if (unlikely(__pyx_t_13 < 0)) __pyx_t_8 = 0;
32342         } else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_objbuf.diminfo[0].shape)) __pyx_t_8 = 0;
32343         if (unlikely(__pyx_t_8 != -1)) {
32344           __Pyx_RaiseBufferIndexError(__pyx_t_8);
32345           {__pyx_filename = __pyx_f[1]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
32346         }
32347         __pyx_t_3 = (PyObject *) *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_objbuf.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_objbuf.diminfo[0].strides);
32348         __Pyx_INCREF((PyObject*)__pyx_t_3);
32349         __pyx_t_7 = ((!(PyString_Check(__pyx_t_3) != 0)) != 0);

any obvious clues? ;)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Testingpandas testing functions or related to the test suite

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions