[Numpy-discussion] bus error in embedded numpy
Robin
robince@gmail....
Fri Nov 13 11:23:19 CST 2009
Hi,
I'm trying to embed Python in a MATLAB mex file. I've been coming
under some pressure to make my Python code available to my MATLAB
colleagues so I am trying to come up with a relatively general way of
calling numerical python code from Matlab.
I am making some progress - but get a reliable crash from numpy. This
only occurs the second time I am loading it. So I Py_Initialize,
import numpy, Py_Finalize (all works fine), but then if I clear the
mex file (clear funcname in matlab - which calls Py_Finalize through a
mexAtExit handler) and try to run the function again (which will
reinitialize interpreter and import numpy again) I get the followin
stack trace from multisarray.so. Wondered if anyone could through any
light. I have already run into this bug
http://bugs.python.org/issue6869 which prevents me using ctypes... I
wondered if this was related.
For now its not such a big problem - I will just avoid unloading the
mex function (with clear function). But I thought it might be
indicative of a memory leak or some other problem since I think in
theory it should work (It does if numpy isn't imported).
Cheers
Robin
------------------------------------------------------------------------
Bus error detected at Fri Nov 13 17:11:57 2009
------------------------------------------------------------------------
Configuration:
MATLAB Version: 7.8.0.347 (R2009a)
MATLAB License: 161051
Operating System: Darwin 10.0.0 Darwin Kernel Version 10.0.0: Fri
Jul 31 22:47:34 PDT 2009; root:xnu-1456.1.25~1/RELEASE_I386 i386
Window System: The X.Org Foundation (10402000), display
/tmp/launch-2p1ZWg/:0
Current Visual: 0x24 (class 4, depth 24)
Processor ID: x86 Family 6 Model 15 Stepping 10, GenuineIntel
Virtual Machine: Java 1.6.0_15-b03-219 with Apple Inc. Java
HotSpot(TM) Client VM mixed mode
Default Encoding: ISO-8859-1
Fault Count: 1
Register State:
eax = 00000001 ebx = 307b12ab
ecx = 00000000 edx = 305ef148
esi = 305ef140 edi = 32a79d60
ebp = b097c6c8 esp = b097c670
eip = 307b14be flg = 00010202
Stack Trace:
[0] multiarray.so:PyArray_FromScalar~(0x305ef140, 0, 2, 0x32e23287)
+ 542 bytes
[1] multiarray.so:gentype_nonzero_number~(0x305ef140, 0x2eaa6db0, 0,
0x32e73cfe) + 36 bytes
[2] Python:PyObject_IsTrue~(0x305ef140, 0x2ea95de0, 2, 0) + 63 bytes
[3] Python:PyEval_EvalFrameEx~(0x33c95160, 0, 0x332941e0, 0) + 12598 bytes
[4] Python:PyEval_EvalFrameEx~(0x32a70f80, 0, 0x332941e0, 0) + 24217 bytes
[5] Python:PyEval_EvalCodeEx~(0x33f05068, 0x332941e0, 0, 0x32a96794)
+ 1819 bytes
[6] Python:PyEval_EvalFrameEx~(0x32a96640, 0, 0x332941e0, 0) + 16561 bytes
[7] Python:PyEval_EvalCodeEx~(0x33f051d0, 0x332941e0, 0, 0x32a6fcc0)
+ 1819 bytes
[8] Python:PyEval_EvalFrameEx~(0x32a6fb60, 0, 0x33bc99c0, 0) + 16561 bytes
[9] Python:PyEval_EvalCodeEx~(0x334abda0, 0x33bc99c0, 0, 0x32ad3b24)
+ 1819 bytes
[10] Python:PyEval_EvalFrameEx~(0x32ad39d0, 0, 0x33bc94b0, 0) + 16561 bytes
[11] Python:PyEval_EvalCodeEx~(0x332919b0, 0x33bc94b0, 0,
0x33ce5294) + 1819 bytes
[12] Python:PyEval_EvalFrameEx~(0x33ce5150, 0, 0x33bc94b0, 0) + 16561 bytes
[13] Python:PyEval_EvalCodeEx~(0x332918d8, 0x33bc94b0, 0,
0x34d5156c) + 1819 bytes
[14] Python:PyEval_EvalFrameEx~(0x34d51430, 0, 0x33bc9300,
0x33bc9300) + 16561 bytes
[15] Python:PyEval_EvalCodeEx~(0x33291968, 0x33bc9300, 0x33bc9300,
0) + 1819 bytes
[16] Python:PyEval_EvalCode~(0x33291968, 0x33bc9300, 0x33bc9300,
0x9325378f) + 87 bytes
[17] Python:PyImport_ExecCodeModuleEx~(0xb097e4cb
"numpy.core._internal", 0x33291968, 0xb097dbbf
"/Library/Frameworks/Python.frame..", 0x332a2000) + 193 bytes
[18] Python:load_source_module~(1, 0, 0xb097e418 "X™C†", 0xb097e41c)
+ 726 bytes
[19] Python:import_submodule~(0xb097e4d6 "_internal", 0x33d1ce1c
"_internal", 9, 0x32e2cfc9) + 293 bytes
[20] Python:load_next~(0xb097e4cb "numpy.core._internal",
0xb097e8cc, 0xb097e578, 0x32e8b5e6) + 195 bytes
[21] Python:import_module_level~(0x32ee4aa0 "TD", 0xffffffff,
0xee9e70b3, 0x32e6df4d "«E") + 142 bytes
[22] Python:PyImport_ImportModuleLevel~(0x33d1ce1c "_internal",
0x33b25150, 0x33b25150, 0x32ee4aa0 "TD") + 45 bytes
[23] Python:builtin___import__~(0, 0x348854e0, 0, 0x32e73cfe) + 156 bytes
[24] Python:PyObject_Call~(0x33da9a08, 0x348854e0, 0, 0x32e233cd) + 45 bytes
[25] Python:PyEval_CallObjectWithKeywords~(0x33da9a08, 0x348854e0,
0, 0x33b25150) + 112 bytes
[26] Python:PyEval_EvalFrameEx~(0x33cd2da0, 0, 0x33b25150,
0x33b25150) + 8138 bytes
[27] Python:PyEval_EvalCodeEx~(0x33332068, 0x33b25150, 0x33b25150,
0) + 1819 bytes
[28] Python:PyEval_EvalCode~(0x33332068, 0x33b25150, 0x33b25150,
0x9325378f) + 87 bytes
[29] Python:PyImport_ExecCodeModuleEx~(0xb097fadb "numpy.core",
0x33332068, 0xb097ed7f "/Library/Frameworks/Python.frame..",
0x4adc73cc) + 193 bytes
[30] Python:load_source_module~(1, 0, 0xb097f5cc, 0) + 726 bytes
[31] Python:load_package~(5, 0, 0xb097fa28, 0xb097fa2c) + 427 bytes
[32] Python:import_submodule~(0xb097fae1 "core", 0x3488536a
"core.numeric", 4, 0x32e2cfc9) + 293 bytes
[33] Python:load_next~(0xb097fadb "numpy.core", 0xb097fedc, 9,
0x32e8b5e6) + 195 bytes
[34] Python:import_module_level~(0x32ee4aa0 "TD", 0xffffffff,
0x746e6920, 0x32e6df4d "«E") + 213 bytes
[35] Python:PyImport_ImportModuleLevel~(0x34885364
"numpy.core.numeric", 0x33b25a50, 0x33b25a50, 0x32ee4aa0 "TD") + 45
bytes
[36] Python:builtin___import__~(0, 0x34885780, 0, 0x32e73cfe) + 156 bytes
[37] Python:PyObject_Call~(0x33da9a08, 0x34885780, 0, 0x32e233cd) + 45 bytes
[38] Python:PyEval_CallObjectWithKeywords~(0x33da9a08, 0x34885780,
0, 0x33b25a50) + 112 bytes
[39] Python:PyEval_EvalFrameEx~(0x33cd07a0, 0, 0x33b25a50,
0x33b25a50) + 8138 bytes
[40] Python:PyEval_EvalCodeEx~(0x33332140, 0x33b25a50, 0x33b25a50,
0) + 1819 bytes
[41] Python:PyEval_EvalCode~(0x33332140, 0x33b25a50, 0x33b25a50,
0x9325378f) + 87 bytes
[42] Python:PyImport_ExecCodeModuleEx~(0xb0980c9b
"numpy.lib.type_check", 0x33332140, 0xb098038f
"/Library/Frameworks/Python.frame..", 6771) + 193 bytes
[43] Python:load_source_module~(1, 0, 0xb0980be8 "®©C†", 0xb0980bec)
+ 726 bytes
[44] Python:import_submodule~(0xb0980ca5 "type_check", 0x33d182b4
"type_check", 10, 0x32e2cfc9) + 293 bytes
[45] Python:load_next~(0xb0980c9b "numpy.lib.type_check",
0xb098109c, 0xb0980d48, 0x32e8b5e6) + 195 bytes
[46] Python:import_module_level~(0x3082c1b0, 0xffffffff, 0xee9e70b3,
0x32e6df4d "«E") + 142 bytes
[47] Python:PyImport_ImportModuleLevel~(0x33d182b4 "type_check",
0x33b25390, 0x33b25390, 0x3082c1b0) + 45 bytes
[48] Python:builtin___import__~(0, 0x348d0d20, 0, 0x32e73cfe) + 156 bytes
[49] Python:PyObject_Call~(0x33da9a08, 0x348d0d20, 0, 0x32e233cd) + 45 bytes
[50] Python:PyEval_CallObjectWithKeywords~(0x33da9a08, 0x348d0d20,
0, 0x33b25390) + 112 bytes
[51] Python:PyEval_EvalFrameEx~(0x33ce5580, 0, 0x33b25390,
0x33b25390) + 8138 bytes
[52] Python:PyEval_EvalCodeEx~(0x337b14e8, 0x33b25390, 0x33b25390,
0) + 1819 bytes
[53] Python:PyEval_EvalCode~(0x337b14e8, 0x33b25390, 0x33b25390,
0x9325378f) + 87 bytes
[54] Python:PyImport_ExecCodeModuleEx~(0xb09822ab "numpy.lib",
0x337b14e8, 0xb098154f "/Library/Frameworks/Python.frame..",
0x4adc73cd) + 193 bytes
[55] Python:load_source_module~(1, 0, 0xb0981d9c, 0) + 726 bytes
[56] Python:load_package~(5, 0, 0xb09821f8, 0xb09821fc) + 427 bytes
[57] Python:import_submodule~(0xb09822b1 "lib", 0x2ea9f074 "lib", 3,
0x32e2cfc9) + 293 bytes
[58] Python:load_next~(0xb09822ab "numpy.lib", 0xb09826ac, 5,
0x32e8b5e6) + 195 bytes
[59] Python:import_module_level~(0x33768ab0, 0xffffffff, 0xb0982738,
0x32e6df4d "«E") + 142 bytes
[60] Python:PyImport_ImportModuleLevel~(0x2ea9f074 "lib",
0x33b25420, 0x33b25420, 0x33768ab0) + 45 bytes
[61] Python:builtin___import__~(0, 0x348d0f30, 0, 0x32e73cfe) + 156 bytes
[62] Python:PyObject_Call~(0x33da9a08, 0x348d0f30, 0, 0x32e233cd) + 45 bytes
[63] Python:PyEval_CallObjectWithKeywords~(0x33da9a08, 0x348d0f30,
0, 0x33b25420) + 112 bytes
[64] Python:PyEval_EvalFrameEx~(0x32a90300, 0, 0x33b25420,
0x33b25420) + 8138 bytes
[65] Python:PyEval_EvalCodeEx~(0x337b13c8, 0x33b25420, 0x33b25420,
0) + 1819 bytes
[66] Python:PyEval_EvalCode~(0x337b13c8, 0x33b25420, 0x33b25420,
0x9325378f) + 87 bytes
[67] Python:PyImport_ExecCodeModuleEx~(0xb098346b
"numpy.add_newdocs", 0x337b13c8, 0xb0982b5f
"/Library/Frameworks/Python.frame..", 0x0358d500) + 193 bytes
[68] Python:load_source_module~(1, 0, 0xb09833b8 "¯®C†", 0xb09833bc)
+ 726 bytes
[69] Python:import_submodule~(0xb0983471 "add_newdocs", 0x33d0a7b4
"add_newdocs", 11, 0x32e2cfc9) + 293 bytes
[70] Python:load_next~(0xb098346b "numpy.add_newdocs", 0xb098386c,
0xb0983518, 0x32e8b5e6) + 195 bytes
[71] Python:import_module_level~(0x32ee4aa0 "TD", 0xffffffff,
0xe17a9024, 0x32e6df4d "«E") + 142 bytes
[72] Python:PyImport_ImportModuleLevel~(0x33d0a7b4 "add_newdocs",
0x33b25b70, 0x33b25b70, 0x32ee4aa0 "TD") + 45 bytes
[73] Python:builtin___import__~(0, 0x348c7ed0, 0, 0x32e73cfe) + 156 bytes
[74] Python:PyObject_Call~(0x33da9a08, 0x348c7ed0, 0, 0x32e233cd) + 45 bytes
[75] Python:PyEval_CallObjectWithKeywords~(0x33da9a08, 0x348c7ed0,
0, 0x33b25b70) + 112 bytes
[76] Python:PyEval_EvalFrameEx~(0x34c489a0, 0, 0x33b25b70,
0x33b25b70) + 8138 bytes
[77] Python:PyEval_EvalCodeEx~(0x337562f0, 0x33b25b70, 0x33b25b70,
0) + 1819 bytes
[78] Python:PyEval_EvalCode~(0x337562f0, 0x33b25b70, 0x33b25b70,
0x9325378f) + 87 bytes
[79] Python:PyImport_ExecCodeModuleEx~(0xb0984a7b "numpy",
0x337562f0, 0xb0983d1f "/Library/Frameworks/Python.frame..",
0x4adc73cd) + 193 bytes
[80] Python:load_source_module~(1, 0, 0xb098456c, 0) + 726 bytes
[81] Python:load_package~(5, 0, 0xb09849c8, 0xb09849cc) + 427 bytes
[82] Python:import_submodule~(0xb0984a7b "numpy", 0x304f6134
"numpy", 5, 0x32e21553) + 293 bytes
[83] Python:load_next~(0xb0984a7b "numpy", 0xb0984e7c, 0xb0984b28,
0x32e8b5e6) + 195 bytes
[84] Python:import_module_level~(0x32ee4aa0 "TD", 0xffffffff,
0x30173290, 0x32e6df4d "«E") + 142 bytes
[85] Python:PyImport_ImportModuleLevel~(0x304f6134 "numpy",
0x33f19420, 0x33f19420, 0x32ee4aa0 "TD") + 45 bytes
[86] Python:builtin___import__~(0, 0x33341bd0, 0, 0x32e73cfe) + 156 bytes
[87] Python:PyObject_Call~(0x33da9a08, 0x33341bd0, 0, 0x32e233cd) + 45 bytes
[88] Python:PyEval_CallObjectWithKeywords~(0x33da9a08, 0x33341bd0,
0, 0x33f19420) + 112 bytes
[89] Python:PyEval_EvalFrameEx~(0x336e5be0, 0, 0x33f19420,
0x33f19420) + 8138 bytes
[90] Python:PyEval_EvalCodeEx~(0x2eabb9b0, 0x33f19420, 0x33f19420,
0) + 1819 bytes
[91] Python:PyEval_EvalCode~(0x2eabb9b0, 0x33f19420, 0x33f19420,
0x33684d60) + 87 bytes
[92] Python:PyRun_StringFlags~(0x2dd56f19 "import numpy;
numpy.test()", 257, 0x33f19420, 0x33f19420) + 243 bytes
[93] Python:PyRun_SimpleStringFlags~(0x2dd56f19 "import numpy;
numpy.test()", 0, 0, 0xb0985b88) + 72 bytes
[94] libmex.dylib:mexRunMexFile(0, 0xb0985b28, 0, 0xb0985b88) + 107 bytes
[95] libmex.dylib:Mfh_mex::runMexFileWithSignalProtection(int,
mxArray_tag**, int, mxArray_tag**)(0x301beb70, 0, 0xb0985b28, 0) + 111
bytes
[96] libmex.dylib:Mfh_mex::dispatch_file(int, mxArray_tag**, int,
mxArray_tag**)(0x301beb70, 0, 0xb0985b28, 0) + 250 bytes
[97] libmwm_dispatcher.dylib:Mfh_file::dispatch_fh(int,
mxArray_tag**, int, mxArray_tag**)(0x301beb70, 0, 0xb0985b28, 0) + 256
bytes
[98] libmwm_interpreter.dylib:ResolverFunctionDesc::CallFunction(int,
mxArray_tag**, int, mxArray_tag**)(0xb0986118 "‡Gs", 0, 0xb0985b28, 0)
+ 793 bytes
[99] libmwm_interpreter.dylib:Resolver::CallMFunction(int, int,
_m_operand*, m_operand_storage*, int, _m_operand*, m_operand_storage*,
int*)(0xb0985cf4, 0, 1, 0x301e3f50) + 1446 bytes
[100] libmwm_interpreter.dylib:inResolveMFunctionCall(_m_function_desc*,
int, int, _m_operand*, m_operand_storage*, int, _m_operand*,
m_operand_storage*, int*, inMarshalType*, int, mpsTypeSequenceNlhs
const*, mxArray_tag* (*)(int))(0x301beef0, 0, 1, 0x301e3f50) + 474
bytes
[101] libmwm_interpreter.dylib:accelImpl::MFunctionCall(_accelOp**)(0xb0986264,
0xb0986278 "XT$.", 0x336380b0, 0x34c89470 "∞<n3") + 269 bytes
[102] libmwm_interpreter.dylib:accelImpl::Exec()(0xb0986264,
0x0358a000, 0xb09862a8, 0x336bb9b4) + 199 bytes
[103] libmwm_interpreter.dylib:accelCode::Call(inMarshalType*, int*)
const(0x336cd430, 0xb09863d8, 0xb09863d4, 0x009d6e60) + 100 bytes
[104] libmwm_interpreter.dylib:inJit::ExecuteHotSegment(_inJitAccelInfo*,
opcodes*, int*, int*)(0xb0986458, 0xb0986468, 0xb0986464 "ˇˇˇˇ",
0xb0986460) + 1338 bytes
[105] libmwm_interpreter.dylib:inExecuteMFunctionOrScript(Mfh_mp*,
bool)(0x336e3cb0, 1, 0xb098699c, 0) + 704 bytes
[106] libmwm_interpreter.dylib:inRunMfile(int, mxArray_tag**, int,
mxArray_tag**, Mfh_mp*, inWorkSpace_tag*)(0, 0xb098699c, 0, 0) + 696
bytes
[107] libmwm_interpreter.dylib:Mfh_mp::dispatch_file(int,
mxArray_tag**, int, mxArray_tag**)(0x336e3cb0, 0, 0xb098699c, 0) + 56
bytes
[108] libmwm_dispatcher.dylib:Mfh_file::dispatch_fh(int,
mxArray_tag**, int, mxArray_tag**)(0x336e3cb0, 0, 0xb098699c, 0) + 256
bytes
[109] libmwm_interpreter.dylib:inEvalPcodeHeaderToWord(_memory_context*,
int, mxArray_tag**, _pcodeheader*, Mfh_mp*, unsigned int)(0x000a2ac8
"§*\n", 0, 0xb098699c, 0xb098683c) + 252 bytes
[110] libmwm_interpreter.dylib:inEvalStringWithIsVarFcn(_memory_context*,
char const*, EvalType, int, mxArray_tag**, inDebugCheck,
_pcodeheader*, int*, bool (*)(void*, char const*), void*, bool,
bool)(0, 0xb098699c, 0, 0) + 1835 bytes
[111] libmwm_interpreter.dylib:inEvalCmdWithLocalReturn(char const*,
int*, bool, bool, bool (*)(void*, char const*))(1, 0x004aeb20, 0, 0) +
148 bytes
[112] libmwm_interpreter.dylib:inEvalCmdWithLocalReturn(0x2e272200
"pytest()\n", 0, 0, 1) + 66 bytes
[113] libmwbridge.dylib:evalCommandWithLongjmpSafety(char
const*)(0x2e272200 "pytest()\n", 2, 0x3012ff98, 4073223) + 108 bytes
[114] libmwbridge.dylib:mnParser(0xb0986b34, 0x0502cc00, 1, 0) + 666 bytes
[115] libmwmcr.dylib:mcrInstance::mnParser_on_interpreter_thread()(0x0502cc00,
8, 0x0384ce00, 4) + 43 bytes
[116] libmwmcr.dylib:boost::function0<void>::operator()()
const(0x2b44dc54 "ˆA", 0, 0xb0986c68, 171953) + 41 bytes
[117] libmwmcr.dylib:mcr::runtime::InterpreterThread::Impl::NoResultInvocationRequest::run()(0x2b44dc40,
0, 0xb0986be8, 172001) + 21 bytes
[118] libmwmcr.dylib:mcr::runtime::InterpreterThread::Impl::invocation_request_handler(long)(0x2b44dc40,
0, 0x027a1a00, 0x3005f880) + 24 bytes
[119] libmwuix.dylib:uix_DispatchOrProcess(_XEvent*, _XtAppStruct*,
int, bool)(0, 15, 0x000f4240 "put_target_string_with_length",
0x4afd9271) + 476 bytes
[120] libmwuix.dylib:ws_ProcessPendingEventsHelper(int, int,
bool)(1, 0xffffffff, 0, 852585) + 469 bytes
[121] libmwmcr.dylib:mcr::runtime::InterpreterThread::Impl::process_events(boost::shared_ptr<mcr::runtime::InterpreterThread::Impl>
const&)(0x04c3b8e0, 0xb0986e68, 0, 0x04c3b890
"/Applications/MATLAB_R2009a.app/..") + 376 bytes
[122] libmwmcr.dylib:mcr::runtime::InterpreterThread::Impl::run(boost::shared_ptr<mcr::runtime::InterpreterThread::Impl>
const&, mcr::runtime::InterpreterThread::Impl::init_context*)(0x04c3b8e0,
0xb0986e68, 0xb0a06cac, 4078061) + 410 bytes
[123] libmwmcr.dylib:run_init_and_handle_events(void*)(0xb0a06cac,
0, 0, 0) + 52 bytes
[124] MATLAB:create_mcrInstance_and_run_mnParser(0xb0986f00 "@†A",
8816, 0, 0) + 553 bytes
[125] MATLAB:start(2, 0xbffff4d0 "§ıˇøÓıˇø", 0xb0987000 "DRHT",
0xffffffff) + -2223 bytes
[126] libmwmcr.dylib:runMcrMain(void*)(0xbffff440 "‡%", 0x04000000,
1, 0) + 39 bytes
[127] libSystem.B.dylib:_pthread_start~(0xb0987000 "DRHT", 14083,
0x004075f0, 0xbffff440 "‡%") + 345 bytes
[128] libSystem.B.dylib:thread_start~(0, 0, 0, 0x54485244) + 34 bytes
More information about the NumPy-Discussion
mailing list