Description
I embed Python into cpp, and need to use numpy in the embeded python-shell. I get "Segmentation fault" while importing numpy in the second session with python-shell, and the first session with python-shell is ended by Ctrl-D. The following cpp code recall the "Segmentation fault" error.
Using Ubuntu 14.04.4 LTS(64 bit), Python3.4.3, gcc4.8.4, numpy1.11.0
//c_py.cpp
#include <stdio.h>
#include "Python.h"
void callpy(int argc, char**argv);
int main(int argc, char**argv)
{
while(true)
{
callpy(argc,argv);
printf("\nFinish one call. Do something else. Wait.\n");
getchar();
}
return 0;
}
void callpy(int argc, char**argv)
{
Py_Initialize();
Py_Main(argc,(wchar_t**)argv);
Py_Finalize();
}
I gdb it and got the following:
$ gdb ./c_py
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
This GDB was configured as "x86_64-linux-gnu".
(gdb) run
Starting program: ./c_py
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Python 3.4.3 (default, Oct 14 2015, 20:31:36)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> print(np.version.version)
1.11.0
>>> Ctr-D
Finish one call. Do something else. Wait.
Python 3.4.3 (default, Oct 14 2015, 20:31:36)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff55b5db8 in PyArray_Item_INCREF (
data=data@entry=0x7ffff4b3f740 "\n",
descr=descr@entry=0x7ffff5839060 <OBJECT_Descr>)
at numpy/core/src/multiarray/refcount.c:35
35 Py_XINCREF(temp);
(gdb) list
30 if (!PyDataType_REFCHK(descr)) {
31 return;
32 }
33 if (descr->type_num == NPY_OBJECT) {
34 NPY_COPY_PYOBJECT_PTR(&temp, data);
35 Py_XINCREF(temp);
36 }
37 else if (PyDataType_HASFIELDS(descr)) {
38 PyObject *key, *value, *title = NULL;
39 PyArray_Descr *new;
(gdb) bt
#0 0x00007ffff55b5db8 in PyArray_Item_INCREF (
data=data@entry=0x7ffff4b3f740 "\n",
descr=descr@entry=0x7ffff5839060 <OBJECT_Descr>)
at numpy/core/src/multiarray/refcount.c:35
#1 0x00007ffff55b8eeb in PyArray_FromScalar (scalar=<optimized out>,
outcode=outcode@entry=0x0) at numpy/core/src/multiarray/scalarapi.c:344
#2 0x00007ffff55ba2ac in gentype_nonzero_number (m1=<optimized out>)
at numpy/core/src/multiarray/scalartypes.c.src:371
#3 0x00007ffff79e5507 in PyObject_IsTrue ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#4 0x00007ffff7894162 in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#5 0x00007ffff78976fc in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#6 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#7 0x00007ffff79c87f6 in ?? ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#8 0x00007ffff78e2938 in PyObject_Call ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#9 0x00007ffff796f161 in _PyObject_CallMethodIdObjArgs ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#10 0x00007ffff7984c33 in PyImport_ImportModuleLevelObject ()
---Type <return> to continue, or q <return> to quit---
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#11 0x00007ffff78dd82f in ?? ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#12 0x00007ffff7896feb in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#13 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#14 0x00007ffff78971e2 in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#15 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#16 0x00007ffff79c87f6 in ?? ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#17 0x00007ffff78e2938 in PyObject_Call ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#18 0x00007ffff796f161 in _PyObject_CallMethodIdObjArgs ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#19 0x00007ffff7984aec in PyImport_ImportModuleLevelObject ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#20 0x00007ffff78dd82f in ?? ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#21 0x00007ffff78e2938 in PyObject_Call ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
---Type <return> to continue, or q <return> to quit---
#22 0x00007ffff7986ba7 in PyEval_CallObjectWithKeywords ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#23 0x00007ffff7894a41 in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#24 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#25 0x00007ffff79c895b in PyEval_EvalCode ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#26 0x00007ffff79f135d in ?? ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#27 0x00007ffff7896feb in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#28 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#29 0x00007ffff78971e2 in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#30 0x00007ffff78976fc in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#31 0x00007ffff78976fc in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#32 0x00007ffff78976fc in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#33 0x00007ffff78976fc in PyEval_EvalFrameEx ()
---Type <return> to continue, or q <return> to quit---
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#34 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#35 0x00007ffff79c87f6 in ?? ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#36 0x00007ffff78e2938 in PyObject_Call ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#37 0x00007ffff796f161 in _PyObject_CallMethodIdObjArgs ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#38 0x00007ffff7984c33 in PyImport_ImportModuleLevelObject ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#39 0x00007ffff78dd82f in ?? ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#40 0x00007ffff7896feb in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#41 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#42 0x00007ffff78971e2 in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#43 0x00007ffff78976fc in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#44 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
---Type <return> to continue, or q <return> to quit---
#45 0x00007ffff79c87f6 in ?? ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#46 0x00007ffff78e2938 in PyObject_Call ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#47 0x00007ffff796f161 in _PyObject_CallMethodIdObjArgs ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#48 0x00007ffff7984c33 in PyImport_ImportModuleLevelObject ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#49 0x00007ffff78dd82f in ?? ()
from /usr/lib/x86_64-l
8130
inux-gnu/libpython3.4m.so.1.0
#50 0x00007ffff78e2938 in PyObject_Call ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#51 0x00007ffff7986ba7 in PyEval_CallObjectWithKeywords ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#52 0x00007ffff7894a41 in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#53 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#54 0x00007ffff79c895b in PyEval_EvalCode ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#55 0x00007ffff79f135d in ?? ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#56 0x00007ffff7896feb in PyEval_EvalFrameEx ()
---Type <return> to continue, or q <return> to quit---
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#57 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#58 0x00007ffff78971e2 in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#59 0x00007ffff78976fc in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#60 0x00007ffff78976fc in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#61 0x00007ffff78976fc in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#62 0x00007ffff78976fc in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#63 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#64 0x00007ffff79c87f6 in ?? ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#65 0x00007ffff78e2938 in PyObject_Call ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#66 0x00007ffff796f161 in _PyObject_CallMethodIdObjArgs ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#67 0x00007ffff7984c33 in PyImport_ImportModuleLevelObject ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
---Type <return> to continue, or q <return> to quit---
#68 0x00007ffff78dd82f in ?? ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#69 0x00007ffff78e2938 in PyObject_Call ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#70 0x00007ffff7986ba7 in PyEval_CallObjectWithKeywords ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#71 0x00007ffff7894a41 in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#72 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#73 0x00007ffff79c895b in PyEval_EvalCode ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#74 0x00007ffff79f135d in ?? ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#75 0x00007ffff7896feb in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#76 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#77 0x00007ffff78971e2 in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#78 0x00007ffff78976fc in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#79 0x00007ffff78976fc in PyEval_EvalFrameEx ()
---Type <return> to continue, or q <return> to quit---
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#80 0x00007ffff78976fc in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#81 0x00007ffff78976fc in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#82 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#83 0x00007ffff79c87f6 in ?? ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#84 0x00007ffff78e2938 in PyObject_Call ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#85 0x00007ffff796f161 in _PyObject_CallMethodIdObjArgs ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#86 0x00007ffff7984c33 in PyImport_ImportModuleLevelObject ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#87 0x00007ffff78dd82f in ?? ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#88 0x00007ffff78e2938 in PyObject_Call ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#89 0x00007ffff7986ba7 in PyEval_CallObjectWithKeywords ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#90 0x00007ffff7894a41 in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
---Type <return> to continue, or q <return> to quit---
#91 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#92 0x00007ffff79c895b in PyEval_EvalCode ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#93 0x00007ffff79f135d in ?? ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#94 0x00007ffff7896feb in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#95 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#96 0x00007ffff78971e2 in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#97 0x00007ffff78976fc in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#98 0x00007ffff78976fc in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#99 0x00007ffff78976fc in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#100 0x00007ffff78976fc in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#101 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#102 0x00007ffff79c87f6 in ?? ()
---Type <return> to continue, or q <return> to quit---
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#103 0x00007ffff78e2938 in PyObject_Call ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#104 0x00007ffff796f161 in _PyObject_CallMethodIdObjArgs ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#105 0x00007ffff7984c33 in PyImport_ImportModuleLevelObject ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#106 0x00007ffff78dd82f in ?? ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#107 0x00007ffff7896feb in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#108 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#109 0x00007ffff78971e2 in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#110 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#111 0x00007ffff79c87f6 in ?? ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#112 0x00007ffff78e2938 in PyObject_Call ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#113 0x00007ffff796f161 in _PyObject_CallMethodIdObjArgs ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
---Type <return> to continue, or q <return> to quit---
#114 0x00007ffff7984aec in PyImport_ImportModuleLevelObject ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#115 0x00007ffff78dd82f in ?? ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#116 0x00007ffff78e2938 in PyObject_Call ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#117 0x00007ffff7986ba7 in PyEval_CallObjectWithKeywords ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#118 0x00007ffff7894a41 in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#119 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#120 0x00007ffff79c895b in PyEval_EvalCode ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#121 0x00007ffff79f135d in ?? ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#122 0x00007ffff7896feb in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#123 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#124 0x00007ffff78971e2 in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#125 0x00007ffff78976fc in PyEval_EvalFrameEx ()
---Type <return> to continue, or q <return> to quit---
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#126 0x00007ffff78976fc in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#127 0x00007ffff78976fc in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#128 0x00007ffff78976fc in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#129 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#130 0x00007ffff79c87f6 in ?? ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#131 0x00007ffff78e2938 in PyObject_Call ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#132 0x00007ffff796f161 in _PyObject_CallMethodIdObjArgs ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#133 0x00007ffff7984c33 in PyImport_ImportModuleLevelObject ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#134 0x00007ffff78dd82f in ?? ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#135 0x00007ffff78e2938 in PyObject_Call ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#136 0x00007ffff7986ba7 in PyEval_CallObjectWithKeywords ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
---Type <return> to continue, or q <return> to quit---
#137 0x00007ffff7894a41 in PyEval_EvalFrameEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#138 0x00007ffff79c81c6 in PyEval_EvalCodeEx ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#139 0x00007ffff79c895b in PyEval_EvalCode ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#140 0x00007ffff79f0123 in PyRun_InteractiveOneObject ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#141 0x00007ffff79f046e in PyRun_InteractiveLoopFlags ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#142 0x00007ffff79f0c7e in PyRun_AnyFileExFlags ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#143 0x00007ffff79f24ae in Py_Main ()
from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#144 0x0000000000400983 in callpy (argc=1, argv=0x7fffffffdf28)
at ./c_py.cpp:20
#145 0x000000000040094d in main (argc=1, argv=0x7fffffffdf28)
at ./c_py.cpp:10
Is there something wrong with NPY_COPY_PYOBJECT_PTR
?
NPY_COPY_PYOBJECT_PTR
copy PyObject pointer from src
to dst
, so src
and dst
need to be pointer to PyObject pointer.
NPY_COPY_PYOBJECT_PTR is defined in npy_cpu.h
#define NPY_COPY_PYOBJECT_PTR(dst, src) memcpy(dst, src, sizeof(PyObject *))
but in
34 NPY_COPY_PYOBJECT_PTR(&temp, data);
data
is char*
. Perhaps data
would be &data
.
But I get some other Segmentation faults after modifying to NPY_COPY_PYOBJECT_PTR(&temp, &data);
well, deep segfault, deep night.