[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