strange bug with python24+darwin_8, py-wxpython and xml parsing

Mark Asbach asbach at ient.rwth-aachen.de
Mon Aug 6 13:36:25 PDT 2007


Hi there,

when using py-xml together with py-wxpython, I get a reproductible  
bus error whenever I try to use sax or minidom (both relying on  
expat). Invoking the parsers crashes the application with a bus  
error. The workaround I found is to import xml.parsers.pyexpat before  
importing wx - but this is a workaround, not a bug fix.

I'm not sure how to debug this. When run in gdb I only get

> Program received signal EXC_BAD_ACCESS, Could not access memory.
> Reason: KERN_PROTECTION_FAILURE at address: 0x00000000
> 0x00244479 in PyString_FromString (str=0x0) at Objects/ 
> stringobject.c:106
> 106             size = strlen(str);

This is the backtrace:

> (gdb) backtrace
> #0  0x00244479 in PyString_FromString (str=0x0) at Objects/ 
> stringobject.c:106
> #1  0x002a3678 in PyModule_AddStringConstant (m=0x65f19b0,  
> name=0x1af188d0 "XML_ERROR_UNBOUND_PREFIX", value=0x0) at Python/ 
> modsupport.c:589
> #2  0x1af10ea3 in initpyexpat () at extensions/pyexpat.c:1977
> #3  0x0029f49a in _PyImport_LoadDynamicModule (name=0xbfff9a27  
> "xml.parsers.pyexpat", pathname=0xbfff9587 "/opt/local/lib/ 
> python2.4/site-packages/_xmlplus/parsers/pyexpat.so",  
> fp=0xa000be50) at ./Python/importdl.c:53
> #4  0x0029d491 in load_module (name=0xbfff9a27  
> "xml.parsers.pyexpat", fp=0x1b, buf=0xbfff9587 "/opt/local/lib/ 
> python2.4/site-packages/_xmlplus/parsers/pyexpat.so", type=3,  
> loader=0x0) at Python/import.c:1689
> #5  0x0029dc8f in import_submodule (mod=0x65f1810,  
> subname=0xbfff9a33 "pyexpat", fullname=0xbfff9a27  
> "xml.parsers.pyexpat") at Python/import.c:2276
> #6  0x0029dec1 in load_next (mod=0x65f1810, altmod=0x2e0160,  
> p_name=0xbfff9a33, buf=0xbfff9a27 "xml.parsers.pyexpat",  
> p_buflen=0xbfff9e28) at Python/import.c:2096
> #7  0x0029e375 in PyImport_ImportModuleEx (name=0x65f18d4  
> "pyexpat", globals=0x65ef9c0, locals=0x65ef9c0, fromlist=0x65f18b0)  
> at Python/import.c:1931
> #8  0x002714c3 in builtin___import__ (self=0x0, args=0x65f0e10) at  
> Python/bltinmodule.c:45
> #9  0x0020d87f in PyObject_Call (func=0x10260, arg=0x65f0e10,  
> kw=0x0) at Objects/abstract.c:1795
> #10 0x0027944a in PyEval_CallObjectWithKeywords (func=0x10260,  
> arg=0x65f0e10, kw=0x0) at Python/ceval.c:3435
> #11 0x0027c015 in PyEval_EvalFrame (f=0x1850410) at Python/ceval.c: 
> 2020
> #12 0x00280665 in PyEval_EvalCodeEx (co=0x3e74d60,  
> globals=0x65ef9c0, locals=0x65ef9c0, args=0x0, argcount=0, kws=0x0,  
> kwcount=0, defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:2741
> #13 0x002808a5 in PyEval_EvalCode (co=0x3e74d60, globals=0x65ef9c0,  
> locals=0x65ef9c0) at Python/ceval.c:484
> #14 0x0029c8db in PyImport_ExecCodeModuleEx (name=0xbfffab97  
> "xml.parsers.expat", co=0x3e74d60, pathname=0xbfffa29f "/opt/local/ 
> lib/python2.4/site-packages/_xmlplus/parsers/expat.pyc") at Python/ 
> import.c:636
> #15 0x0029cc9f in load_source_module (name=0xbfffab97  
> "xml.parsers.expat", pathname=0xbfffa29f "/opt/local/lib/python2.4/ 
> site-packages/_xmlplus/parsers/expat.pyc", fp=0xa000bdf8) at Python/ 
> import.c:915
> #16 0x0029dc8f in import_submodule (mod=0x65f1810,  
> subname=0x3e857f4 "expat", fullname=0xbfffab97 "xml.parsers.expat")  
> at Python/import.c:2276
> #17 0x0029e222 in ensure_fromlist (mod=0x65f1810,  
> fromlist=0x3e85f70, buf=0xbfffab97 "xml.parsers.expat", buflen=11,  
> recursive=0) at Python/import.c:2187
> #18 0x0029e66d in PyImport_ImportModuleEx (name=0x65f291c  
> "xml.parsers", globals=0x65ef660, locals=0x65ef660,  
> fromlist=0x3e85f70) at Python/import.c:1958
> #19 0x002714c3 in builtin___import__ (self=0x0, args=0x65f0d20) at  
> Python/bltinmodule.c:45
> #20 0x0020d87f in PyObject_Call (func=0x10260, arg=0x65f0d20,  
> kw=0x0) at Objects/abstract.c:1795
> #21 0x0027944a in PyEval_CallObjectWithKeywords (func=0x10260,  
> arg=0x65f0d20, kw=0x0) at Python/ceval.c:3435
> #22 0x0027c015 in PyEval_EvalFrame (f=0x18fc210) at Python/ceval.c: 
> 2020
> #23 0x00280665 in PyEval_EvalCodeEx (co=0x3e74ba0,  
> globals=0x65ef660, locals=0x65ef660, args=0x0, argcount=0, kws=0x0,  
> kwcount=0, defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:2741
> #24 0x002808a5 in PyEval_EvalCode (co=0x3e74ba0, globals=0x65ef660,  
> locals=0x65ef660) at Python/ceval.c:484
> #25 0x0029c8db in PyImport_ExecCodeModuleEx (name=0xbfffbd07  
> "xml.dom.expatbuilder", co=0x3e74ba0, pathname=0xbfffb40f "/opt/ 
> local/lib/python2.4/site-packages/_xmlplus/dom/expatbuilder.pyc")  
> at Python/import.c:636
> #26 0x0029cc9f in load_source_module (name=0xbfffbd07  
> "xml.dom.expatbuilder", pathname=0xbfffb40f "/opt/local/lib/ 
> python2.4/site-packages/_xmlplus/dom/expatbuilder.pyc",  
> fp=0xa000bda0) at Python/import.c:915
> #27 0x0029dc8f in import_submodule (mod=0x66690, subname=0x119e3cc  
> "expatbuilder", fullname=0xbfffbd07 "xml.dom.expatbuilder") at  
> Python/import.c:2276
> #28 0x0029e222 in ensure_fromlist (mod=0x66690, fromlist=0x119c550,  
> buf=0xbfffbd07 "xml.dom.expatbuilder", buflen=7, recursive=0) at  
> Python/import.c:2187
> #29 0x0029e66d in PyImport_ImportModuleEx (name=0x667d4 "xml.dom",  
> globals=0x7cf540, locals=0x2e0160, fromlist=0x119c550) at Python/ 
> import.c:1958
> #30 0x002714c3 in builtin___import__ (self=0x0, args=0x519c0) at  
> Python/bltinmodule.c:45
> #31 0x0020d87f in PyObject_Call (func=0x10260, arg=0x519c0, kw=0x0)  
> at Objects/abstract.c:1795
> #32 0x0027944a in PyEval_CallObjectWithKeywords (func=0x10260,  
> arg=0x519c0, kw=0x0) at Python/ceval.c:3435
> #33 0x0027c015 in PyEval_EvalFrame (f=0x18d4210) at Python/ceval.c: 
> 2020
> #34 0x00280665 in PyEval_EvalCodeEx (co=0x119f620,  
> globals=0x7cf540, locals=0x0, args=0x18ecda0, argcount=1,  
> kws=0x18ecda4, kwcount=0, defs=0x7d86a4, defcount=2, closure=0x0)  
> at Python/ceval.c:2741
> #35 0x0027e49f in PyEval_EvalFrame (f=0x18ecc10) at Python/ceval.c: 
> 3661
> #36 0x0027ebaa in PyEval_EvalFrame (f=0x196d410) at Python/ceval.c: 
> 3651
> #37 0x00280665 in PyEval_EvalCodeEx (co=0x55720, globals=0x21a50,  
> locals=0x0, args=0x18ca96c, argcount=3, kws=0x18ca978, kwcount=0,  
> defs=0x2ddb49c, defcount=1, closure=0x0) at Python/ceval.c:2741
> #38 0x0027e49f in PyEval_EvalFrame (f=0x18ca810) at Python/ceval.c: 
> 3661
> #39 0x00280665 in PyEval_EvalCodeEx (co=0x556a0, globals=0x21a50,  
> locals=0x0, args=0x385d03c, argcount=2, kws=0x0, kwcount=0,  
> defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:2741
> #40 0x00228063 in function_call (func=0x394b8b0, arg=0x385d030,  
> kw=0x0) at Objects/funcobject.c:548
> #41 0x0020d87f in PyObject_Call (func=0x394b8b0, arg=0x385d030,  
> kw=0x0) at Objects/abstract.c:1795
> #42 0x00215667 in instancemethod_call (func=0x3e878c8,  
> arg=0x3e85970, kw=0x0) at Objects/classobject.c:2532
> #43 0x0020d87f in PyObject_Call (func=0x3e878c8, arg=0x3e85970,  
> kw=0x0) at Objects/abstract.c:1795
> #44 0x0027944a in PyEval_CallObjectWithKeywords (func=0x3e878c8,  
> arg=0x3e85970, kw=0x0) at Python/ceval.c:3435
> #45 0x03ea1c80 in wxPyCallback::EventThunker (this=0x1a65600,  
> event=@0xbfffd208) at src/helpers.cpp:1473
> #46 0x0449f020 in wxEvtHandler::ProcessEventIfMatches ()
> #47 0x0449f0c0 in wxEvtHandler::SearchDynamicEventTable ()
> #48 0x0449f61f in wxEvtHandler::ProcessEvent ()
> #49 0x045cdb61 in wxWindowBase::TryParent ()
> #50 0x0449f5f1 in wxEvtHandler::ProcessEvent ()
> #51 0x045cdb61 in wxWindowBase::TryParent ()
> #52 0x0449f5f1 in wxEvtHandler::ProcessEvent ()
> #53 0x044cd76b in wxControl::ProcessCommand ()
> #54 0x044c8c24 in wxButton::MacControlHit ()
> #55 0x045247cb in wxMacWindowControlEventHandler ()
> #56 0x04525075 in wxMacWindowEventHandler ()
> #57 0x92dec537 in DispatchEventToHandlers ()
> #58 0x92debbdc in SendEventToEventTargetInternal ()
> #59 0x92df2fbc in SendEventToEventTarget ()
> #60 0x92ea66a5 in SendControlHit ()
> #61 0x92ea6596 in HIView::NotifyControlHit ()
> #62 0x92eafe38 in HIView::ClickInternal ()
> #63 0x92e8b045 in HIView::ClickSelf ()
> #64 0x92e10652 in HIView::EventHandler ()
> #65 0x92dec537 in DispatchEventToHandlers ()
> #66 0x92debbdc in SendEventToEventTargetInternal ()
> #67 0x92df2fbc in SendEventToEventTarget ()
> #68 0x92e8ad6f in HIView::Click ()
> #69 0x92e8abab in HandleClickAsHIView ()
> #70 0x92e8a531 in HandleWindowClick ()
> #71 0x92e89fde in HandleMouseEvent ()
> #72 0x92e32488 in StandardWindowEventHandler ()
> #73 0x92dec537 in DispatchEventToHandlers ()
> #74 0x92debbdc in SendEventToEventTargetInternal ()
> #75 0x92df2fbc in SendEventToEventTarget ()
> #76 0x92df344f in ToolboxEventDispatcherHandler ()
> #77 0x92dec8ee in DispatchEventToHandlers ()
> #78 0x92debbdc in SendEventToEventTargetInternal ()
> #79 0x92df2fbc in SendEventToEventTarget ()
> #80 0x044bf30c in wxApp::MacHandleOneEvent ()
> #81 0x044bf3c8 in wxApp::MacDoOneEvent ()
> #82 0x044d731c in wxEventLoop::Dispatch ()
> #83 0x0457cd4b in wxEventLoopManual::Run ()
> #84 0x04556d24 in wxAppBase::MainLoop ()
> #85 0x03e99fd4 in wxPyApp::MainLoop (this=0x6ee690) at src/ 
> helpers.cpp:156
> #86 0x03edf8ee in _wrap_PyApp_MainLoop (args=0x3197f70) at src/mac/ 
> _core_wrap.cpp:30474
> #87 0x0020d87f in PyObject_Call (func=0x4e9a210, arg=0x3e85810,  
> kw=0x3df3300) at Objects/abstract.c:1795
> #88 0x0027e69c in PyEval_EvalFrame (f=0x1912810) at Python/ceval.c: 
> 3845
> #89 0x00280665 in PyEval_EvalCodeEx (co=0x3e25b60,  
> globals=0x3e73420, locals=0x0, args=0x3e856fc, argcount=1, kws=0x0,  
> kwcount=0, defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:2741
> #90 0x00228063 in function_call (func=0x4ebcb30, arg=0x3e856f0,  
> kw=0x0) at Objects/funcobject.c:548
> #91 0x0020d87f in PyObject_Call (func=0x4ebcb30, arg=0x3e856f0,  
> kw=0x0) at Objects/abstract.c:1795
> #92 0x00215667 in instancemethod_call (func=0x5c5b350,  
> arg=0x3e856f0, kw=0x0) at Objects/classobject.c:2532
> #93 0x0020d87f in PyObject_Call (func=0x5c5b350, arg=0x3e856f0,  
> kw=0x0) at Objects/abstract.c:1795
> #94 0x0027e397 in PyEval_EvalFrame (f=0x1863e10) at Python/ceval.c: 
> 3776
> #95 0x0027ebaa in PyEval_EvalFrame (f=0x6082b0) at Python/ceval.c:3651
> #96 0x00280665 in PyEval_EvalCodeEx (co=0x558a0, globals=0x21a50,  
> locals=0x21a50, args=0x0, argcount=0, kws=0x0, kwcount=0, defs=0x0,  
> defcount=0, closure=0x0) at Python/ceval.c:2741
> #97 0x002808a5 in PyEval_EvalCode (co=0x558a0, globals=0x21a50,  
> locals=0x21a50) at Python/ceval.c:484
> #98 0x002a74da in PyRun_FileEx (fp=0xa000bda0, filename=0x51a24  
> "adaptation_server.py", start=257, globals=0x21a50, locals=0x21a50,  
> closeit=1) at Python/pythonrun.c:1285
> #99 0x00272053 in builtin_execfile (self=0x0, args=0x2c490) at  
> Python/bltinmodule.c:631
> #100 0x0027faca in PyEval_EvalFrame (f=0x608a70) at Python/ceval.c: 
> 3568
> #101 0x00280665 in PyEval_EvalCodeEx (co=0x4f5a0, globals=0x21a50,  
> locals=0x21a50, args=0x0, argcount=0, kws=0x0, kwcount=0, defs=0x0,  
> defcount=0, closure=0x0) at Python/ceval.c:2741
> #102 0x002808a5 in PyEval_EvalCode (co=0x4f5a0, globals=0x21a50,  
> locals=0x21a50) at Python/ceval.c:484
> #103 0x002a723a in PyRun_InteractiveOneFlags (fp=0xa0001be0,  
> filename=0x2d1564 "<stdin>", flags=0xbffff778) at Python/ 
> pythonrun.c:1285
> #104 0x002a7355 in PyRun_InteractiveLoopFlags (fp=0xa0001be0,  
> filename=0x2d1564 "<stdin>", flags=0xbffff778) at Python/ 
> pythonrun.c:704
> #105 0x002a8097 in PyRun_AnyFileExFlags (fp=0xa0001be0,  
> filename=0x2d1564 "<stdin>", closeit=0, flags=0xbffff778) at Python/ 
> pythonrun.c:667
> #106 0x002b13ec in Py_Main (argc=0, argv=0xbffff804) at Modules/ 
> main.c:493
> #107 0x00001fae in ?? ()
> #108 0x00001ed5 in ?? ()

Can someone comment on this? What could I do to narrow the bug?

python24 @2.4.4_1+darwin_8 (active)
py-wxpython @2.8.4.0_0 (active)
libxml2 @2.6.28_1 (active)
expat @2.0.1_0 (active)
wxWidgets @2.8.4_2+darwin_8 (active)

I'm running macports 1.5 on an intel MacBook.

TIA, Mark

-- 
Mark Asbach
Institut für Nachrichtentechnik, RWTH Aachen University
http://www.ient.rwth-aachen.de/cms/team/m_asbach




More information about the macports-users mailing list