[sword-devel] Python segfaults on OS X using Sword

Jon Brisbin jon at jbrisbin.com
Thu Feb 7 21:35:07 MST 2008


Awesome! That did it. :)

Thanks!

Jon Brisbin
http://jbrisbin.com



On Feb 7, 2008, at 4:43 PM, Ben Morgan wrote:

> Hi,
>
> Try this:
> filtermgr = Sword.MarkupFilterMgr(Sword.FMT_OSIS)
> filtermgr.thisown = False
>
> instead of just this:
> filtermgr = Sword.MarkupFilterMgr(Sword.FMT_OSIS)
>
> When you pass it in, SWORD will delete it in the SWMgr destructor,
> which is where the segfault has happened. However, SWIG will already
> have deleted it because it found no references to it in python. You
> have to tell swig not to delete it, and setting thisown to false will
> do that. This is true for any sword objects you create from python,
> but pass into sword classes which will clean them up.
>
> When you find it segfaulting, there is a good chance that SWIG has
> cleaned up something it shouldn't have.
>
>
> God Bless,
> Ben
> -------------------------------------------------------------------------------------------
> The Lord is not slow to fulfill his promise as some count slowness,
> but is patient toward you, not wishing that any should perish,
> but that all should reach repentance.
> 2 Peter 3:9 (ESV)
>
> On Feb 8, 2008 2:07 AM, Jon Brisbin <jon at jbrisbin.com> wrote:
>> I'm experimenting with the Python SWIG interface built from 1.5.10
>> source on OS X 10.5.1. If I do things from the command line,
>> interactively, all seems well. But if I run the following script, it
>> segfaults Python with the following stack trace:
>>
>> SCRIPT:
>>
>> #!/usr/bin/python
>> import Sword
>> from Ft.Xml import InputSource, Sax
>>
>> class element_counter:
>>     def startDocument(self):
>>         self.ecount = 0
>>
>>     def startElementNS(self, name, qname, attribs):
>>         self.ecount += 1
>>
>> parser = Sax.CreateParser()
>> handler = element_counter()
>> parser.setContentHandler(handler)
>>
>> filtermgr = Sword.MarkupFilterMgr(Sword.FMT_OSIS)
>> mgr = Sword.SWMgr("/Users/jbrisbin/Library/sword/share/sword", True,
>> filtermgr, True, False)
>> mod = mgr.getModule("ESV")
>> key = Sword.SWKey("Jn 3:16")
>> mod.setKey(key)
>>
>> txt = '<?xml version="1.0"?>' + mod.RenderText()
>> print txt
>>
>> factory = InputSource.DefaultFactory
>> isrc = factory.fromString(txt)
>> parser.parse(isrc)
>> print "Elements counted:", handler.ecount
>>
>>
>> STACKTRACE:
>>
>> Process:         Python [52417]
>> Path:            /System/Library/Frameworks/Python.framework/ 
>> Versions/
>> 2.5/Resources/Python.app/Contents/MacOS/Python
>> Identifier:      Python
>> Version:         ??? (???)
>> Code Type:       X86 (Native)
>> Parent Process:  bash [52282]
>>
>> Date/Time:       2008-02-07 09:00:06.923 -0600
>> OS Version:      Mac OS X 10.5.1 (9B18)
>> Report Version:  6
>>
>> Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
>> Exception Codes: KERN_INVALID_ADDRESS at 0x00000000c0000007
>> Crashed Thread:  0
>>
>> Thread 0 Crashed:
>> 0   libsword-1.5.10.dylib               0x00594155  
>> sword::SWMgr::~SWMgr() +
>> 181
>> 1   _Sword.so                           0x00407a55  
>> _wrap_delete_SWMgr + 303
>> (Sword.cxx:1216)
>> 2   org.python.python                   0x0011fd5d PyObject_Call + 50
>> 3   org.python.python                   0x00120056
>> PyObject_CallFunctionObjArgs + 70
>> 4   _Sword.so                           0x004158e9  
>> PySwigObject_dealloc +
>> 109 (Sword.cxx:1441)
>> 5   org.python.python                   0x0014788d _PyDict_Next + 279
>> 6   org.python.python                   0x0015d20a  
>> PyType_GenericNew + 1258
>> 7   org.python.python                   0x00146e76 PyDict_New + 1286
>> 8   org.python.python                   0x001473ea PyDict_SetItem +  
>> 255
>> 9   org.python.python                   0x0014a930 _PyModule_Clear  
>> + 413
>> 10  org.python.python                   0x0019d649 PyImport_Cleanup  
>> + 518
>> 11  org.python.python                   0x001a7787 Py_Finalize + 247
>> 12  org.python.python                   0x001b3d4f Py_Main + 3395
>> 13  org.python.pythonapp                0x00001fca 0x1000 + 4042
>>
>> Thread 0 crashed with X86 Thread State (32-bit):
>>   eax: 0xc0000003  ebx: 0x005940ab  ecx: 0x00000000  edx: 0x00378710
>>   edi: 0x0037af70  esi: 0x0037dc20  ebp: 0xbffff2c8  esp: 0xbffff290
>>    ss: 0x0000001f  efl: 0x00010202  eip: 0x00594155   cs: 0x00000017
>>    ds: 0x0000001f   es: 0x0000001f   fs: 0x00000000   gs: 0x00000037
>>   cr2: 0xc0000007
>>
>> Binary Images:
>>     0x1000 -     0x1ffe  org.python.pythonapp 2.5.0 (2.5.0a0)
>> <fccdb19d43071ba163b93b4fddd2a7d0> /System/Library/Frameworks/
>> Python.framework/Versions/2.5/Resources/Python.app/Contents/MacOS/ 
>> Python
>>    0xa3000 -    0xa8fff  _socket.so ??? (???)
>> <8a76493385dadf7704e8bc24262283d1> /System/Library/Frameworks/
>> Python.framework/Versions/2.5/lib/python2.5/lib-dynload/_socket.so
>>    0xaf000 -    0xb0fff  _ssl.so ??? (???)
>> <3aceee1559e328aeebd7d8c581672440> /System/Library/Frameworks/
>> Python.framework/Versions/2.5/lib/python2.5/lib-dynload/_ssl.so
>>    0xc7000 -    0xc8ffc  _locale.so ??? (???)
>> <e4f2d3f735f04b48639c3b4a165bce10> /System/Library/Frameworks/
>> Python.framework/Versions/2.5/lib/python2.5/lib-dynload/_locale.so
>>   0x118000 -   0x1e3ffb  org.python.python 2.5 (2.5)
>> <ce7182a9e975861a321dfeeca76f54db> /System/Library/Frameworks/
>> Python.framework/Versions/2.5/Python
>>   0x230000 -   0x232fff  operator.so ??? (???)
>> <a215c2c29d729159721cdf5dbe9bb12a> /System/Library/Frameworks/
>> Python.framework/Versions/2.5/lib/python2.5/lib-dynload/operator.so
>>   0x23d000 -   0x23fffb  _struct.so ??? (???)
>> <b434ba0164e7837947859e5d28ccacb1> /System/Library/Frameworks/
>> Python.framework/Versions/2.5/lib/python2.5/lib-dynload/_struct.so
>>   0x243000 -   0x244fff  time.so ??? (???)
>> <abe3cbc29d1200671a826ed5639404c6> /System/Library/Frameworks/
>> Python.framework/Versions/2.5/lib/python2.5/lib-dynload/time.so
>>   0x24a000 -   0x24bfff  cStringIO.so ??? (???)
>> <43a7d4df1bbeb69a4e75917070d41bd0> /System/Library/Frameworks/
>> Python.framework/Versions/2.5/lib/python2.5/lib-dynload/cStringIO.so
>>   0x24f000 -   0x251ffd  strop.so ??? (???)
>> <368d8f646651c0bb5e77f518587296b9> /System/Library/Frameworks/
>> Python.framework/Versions/2.5/lib/python2.5/lib-dynload/strop.so
>>   0x297000 -   0x2c2ffb  libcurl.4.dylib ??? (???)
>> <54ada27deb3b4ff7043d8836264eca0d> /usr/lib/libcurl.4.dylib
>>   0x2d5000 -   0x2d6ffe  binascii.so ??? (???)
>> <534f894f5102efd2c66cea89278b4224> /System/Library/Frameworks/
>> Python.framework/Versions/2.5/lib/python2.5/lib-dynload/binascii.so
>>   0x2db000 -   0x2dcffd  _hashlib.so ??? (???)
>> <f2f4363127b079545d6ec42234490f4f> /System/Library/Frameworks/
>> Python.framework/Versions/2.5/lib/python2.5/lib-dynload/_hashlib.so
>>   0x2e0000 -   0x2e3ffe  _sha256.so ??? (???)
>> <6dba0a1bf62501099cd13fb386547538> /System/Library/Frameworks/
>> Python.framework/Versions/2.5/lib/python2.5/lib-dynload/_sha256.so
>>   0x2e7000 -   0x2f4ffd  _sha512.so ??? (???)
>> <391fac08716595df15fe628d13da119a> /System/Library/Frameworks/
>> Python.framework/Versions/2.5/lib/python2.5/lib-dynload/_sha512.so
>>   0x2f8000 -   0x2f9fff  math.so ??? (???)
>> <d96fd9d52167d2a1cc33fa704762c167> /System/Library/Frameworks/
>> Python.framework/Versions/2.5/lib/python2.5/lib-dynload/math.so
>>   0x400000 -   0x4e4fff +_Sword.so ??? (???)
>> <cb8413a737cd514b02712dae17aedef9> /Users/jbrisbin/Projects/ 
>> scriptures/
>> ws/_Sword.so
>>   0x57f000 -   0x633fff +libsword-1.5.10.dylib ??? (???) /Users/
>> jbrisbin/Library/sword/lib/libsword-1.5.10.dylib
>>   0x7d8000 -   0x7d9fff  _random.so ??? (???)
>> <f1a90330f912b3724902282313c60ef1> /System/Library/Frameworks/
>> Python.framework/Versions/2.5/lib/python2.5/lib-dynload/_random.so
>>   0x7dd000 -   0x7ddffd  fcntl.so ??? (???)
>> <55376a4a0ccdc8557363a1fb16d59ba9> /System/Library/Frameworks/
>> Python.framework/Versions/2.5/lib/python2.5/lib-dynload/fcntl.so
>>   0x7e1000 -   0x7e1ffd  _bisect.so ??? (???)
>> <b20350d6a0912cc9c972abd47dfb1beb> /System/Library/Frameworks/
>> Python.framework/Versions/2.5/lib/python2.5/lib-dynload/_bisect.so
>>   0x7e5000 -   0x7e6ffd +XmlString.so ??? (???)
>> <23267d9e13e3f7d065f8077723403b87> /Library/Python/2.5/site-packages/
>> Ft/Xml/Lib/XmlString.so
>>   0x7eb000 -   0x7f0ffe  pyexpat.so ??? (???)
>> <d54bdc9a7ccbfb80f2b9f068af162592> /System/Library/Frameworks/
>> Python.framework/Versions/2.5/lib/python2.5/lib-dynload/pyexpat.so
>>   0x7f5000 -   0x7f6fff  collections.so ??? (???)
>> <81a9e184cbc9bfb7b66baaac805f7eb7> /System/Library/Frameworks/
>> Python.framework/Versions/2.5/lib/python2.5/lib-dynload/ 
>> collections.so
>>   0x7fa000 -   0x7fbffc +cStreamWriter.so ??? (???)
>> <208ec26bdc2d4c90513a3dbfed6ff536> /Library/Python/2.5/site-packages/
>> Ft/Xml/Lib/cStreamWriter.so
>>  0x1000000 -  0x109dfef +libclucene.0.dylib ??? (???)
>> <3624d0a164b182729af38da3ce042033> /Users/jbrisbin/Library/clucene/ 
>> lib/
>> libclucene.0.dylib
>>  0x11d0000 -  0x11eefe3  libexpat.1.dylib ??? (???)
>> <eff8a63a23a7d07af62b36fdb329e393> /usr/lib/libexpat.1.dylib
>>  0x11fa000 -  0x11fbffe  termios.so ??? (???)
>> <553bff6fb6aa97220a99ca64cbf0fd0e> /System/Library/Frameworks/
>> Python.framework/Versions/2.5/lib/python2.5/lib-dynload/termios.so
>>  0x1400000 -  0x143efe7 +cDomlettec.so ??? (???)
>> <b8ab8284d10e474865733d3efd282be3> /Library/Python/2.5/site-packages/
>> Ft/Xml/cDomlettec.so
>> 0x8fe00000 - 0x8fe2d883  dyld 95.3 (???)
>> <3896c718b33f3e065e199a659baf1a2b> /usr/lib/dyld
>> 0x90091000 - 0x900eeffb  libstdc++.6.dylib ??? (???)
>> <04b812dcec670daa8b7d2852ab14be60> /usr/lib/libstdc++.6.dylib
>> 0x90976000 - 0x9099afeb  libssl.0.9.7.dylib ??? (???)
>> <acee7fc534674498dcac211318aa23e8> /usr/lib/libssl.0.9.7.dylib
>> 0x9099b000 - 0x90af5fe3  libSystem.B.dylib ??? (???)
>> <08d9ec2f36455fc197b9b44adf62f304> /usr/lib/libSystem.B.dylib
>> 0x91046000 - 0x91054ffd  libz.1.dylib ??? (???)
>> <5ddd8539ae2ebfd8e7cc1c57525385c7> /usr/lib/libz.1.dylib
>> 0x91c3c000 - 0x91c43fe9  libgcc_s.1.dylib ??? (???)
>> <a9ab135a5f81f6e345527df87f51bfc9> /usr/lib/libgcc_s.1.dylib
>> 0x91eb8000 - 0x91f68fff  edu.mit.Kerberos 6.0.11 (6.0.11)
>> <33c25789baedcd70a7e24881775dd9ad> /System/Library/Frameworks/
>> Kerberos.framework/Versions/A/Kerberos
>> 0x93378000 - 0x93379fef  libmathCommon.A.dylib ??? (???) /usr/lib/
>> system/libmathCommon.A.dylib
>> 0x9337a000 - 0x9342cffb  libcrypto.0.9.7.dylib ??? (???)
>> <330b0e48e67faffc8c22dfc069ca7a47> /usr/lib/libcrypto.0.9.7.dylib
>> 0x94638000 - 0x94662fef  libauto.dylib ??? (???)
>> <d468bc4a8a69343f1748c293db1b57fb> /usr/lib/libauto.dylib
>> 0x94f0f000 - 0x94feefff  libobjc.A.dylib ??? (???)
>> <5eda47fec2d0e7853b3506aa1fd2dafa> /usr/lib/libobjc.A.dylib
>> 0x9535b000 - 0x95524fef  com.apple.security 5.0.1 (32736)
>> <8c9eda0fcc1d8a571543025ac900715f> /System/Library/Frameworks/
>> Security.framework/Versions/A/Security
>> 0x95a76000 - 0x95ba8fe7  com.apple.CoreFoundation 6.5 (476)
>> <8bfebc0dbad6fc33bea0fa00a1b9ec37> /System/Library/Frameworks/
>> CoreFoundation.framework/Versions/A/CoreFoundation
>> 0x95c47000 - 0x95d7fff7  libicucore.A.dylib ??? (???)
>> <afcea652ff2ec36885b2c81c57d06d4c> /usr/lib/libicucore.A.dylib
>> 0x96587000 - 0x965a5fff  libresolv.9.dylib ??? (???)
>> <8538164a282c147c3543550ae49d4bd4> /usr/lib/libresolv.9.dylib
>> 0xfffe8000 - 0xfffebfff  libobjc.A.dylib ??? (???) /usr/lib/
>> libobjc.A.dylib
>> 0xffff0000 - 0xffff1780  libSystem.B.dylib ??? (???) /usr/lib/
>> libSystem.B.dylib
>>
>>
>> Thanks!
>>
>> Jon Brisbin
>> http://jbrisbin.com
>>
>>
>>
>>
>> _______________________________________________
>> sword-devel mailing list: sword-devel at crosswire.org
>> http://www.crosswire.org/mailman/listinfo/sword-devel
>> Instructions to unsubscribe/change your settings at above page
>>
>
> _______________________________________________
> sword-devel mailing list: sword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/sword-devel
> Instructions to unsubscribe/change your settings at above page




More information about the sword-devel mailing list