On 29 June 2010 04:02, Dan Connolly <[email protected]> wrote:
> On Mon, 2010-06-28 at 12:28 -0500, Dan Connolly wrote:
>> On Mon, 2010-06-28 at 10:51 -0500, Dan Connolly wrote:
>> > I seem to be hitting the pyexpat issue...
>> >
>> > Anybody want to remind me of the fix or work-around?
>> > Perhaps I can find it myself...
>>
>> OK, so I found
>> http://code.google.com/p/modwsgi/wiki/IssuesWithExpatLibrary
>>
>> and I re-built apache with --disable-expat.
>> Now lsof shows no libexpat.so at all.
>
> Not util it's dynamically loaded, that is.
>
> tee hee.
>
>> But I'm still getting a SEGV in roughly the same place:
>
> The fix was:
>
> 1)  sudo zypper install libexpat-devel
> 2) add --with-expat=/usr/lib to apache config options and recompile.
>
> That IssuesWithExpatLibrary doc is really quite nice. Thanks!

There is a slight problem with that. The expat issues shouldn't apply
to Python 2.5 and later as from then on the pyexpat bundled with
Python namespace prefixed the symbols so they didn't clash with any
separate expat shared library used by something else linked into the
same executable.

The only way there could be a problem is if pyexpat was updated to
newer expat code and they forgot to properly namespace prefix some
symbols that were being used. Alternatively if the pyexpat was
explicitly compiled so as to use system libexpat instead in contained
expat code.

It seems that for MacOS X Snow Leopard supplied Python 2.6 as example,
it does use separate expat library. You can find this out by going:

nm 
/System/Library/Frameworks/Python.framework/Versions/Current/lib/python2.6/lib-dynload/pyexpat.so
| grep XML

yielding:

                 U _XML_ErrorString
                 U _XML_ExpatVersion
                 U _XML_ExpatVersionInfo
                 U _XML_ExternalEntityParserCreate
                 U _XML_FreeContentModel
                 U _XML_GetBase
                 U _XML_GetBuffer
                 U _XML_GetCurrentByteIndex
                 U _XML_GetCurrentColumnNumber
                 U _XML_GetCurrentLineNumber
                 U _XML_GetErrorCode
                 U _XML_GetFeatureList
                 U _XML_GetInputContext
                 U _XML_GetSpecifiedAttributeCount
                 U _XML_Parse
                 U _XML_ParseBuffer
                 U _XML_ParserCreate
                 U _XML_ParserCreateNS
                 U _XML_ParserCreate_MM
                 U _XML_ParserFree
                 U _XML_SetAttlistDeclHandler
                 U _XML_SetBase
                 U _XML_SetCharacterDataHandler
                 U _XML_SetCommentHandler
                 U _XML_SetDefaultHandler
                 U _XML_SetDefaultHandlerExpand
                 U _XML_SetElementDeclHandler
                 U _XML_SetElementHandler
                 U _XML_SetEndCdataSectionHandler
                 U _XML_SetEndDoctypeDeclHandler
                 U _XML_SetEndElementHandler
                 U _XML_SetEndNamespaceDeclHandler
                 U _XML_SetEntityDeclHandler
                 U _XML_SetExternalEntityRefHandler
                 U _XML_SetNamespaceDeclHandler
                 U _XML_SetNotStandaloneHandler
                 U _XML_SetNotationDeclHandler
                 U _XML_SetParamEntityParsing
                 U _XML_SetProcessingInstructionHandler
                 U _XML_SetReturnNSTriplet
                 U _XML_SetSkippedEntityHandler
                 U _XML_SetStartCdataSectionHandler
                 U _XML_SetStartDoctypeDeclHandler
                 U _XML_SetStartElementHandler
                 U _XML_SetStartNamespaceDeclHandler
                 U _XML_SetUnknownEncodingHandler
                 U _XML_SetUnparsedEntityDeclHandler
                 U _XML_SetUserData
                 U _XML_SetXmlDeclHandler
                 U _XML_StopParser
                 U _XML_UseForeignDTD

Whereas if I check hand compiled Python 2.6.5 on same OS I get:

000000000000f6f0 T _PyExpat_XML_DefaultCurrent
00000000000091a0 T _PyExpat_XML_ErrorString
00000000000091c0 T _PyExpat_XML_ExpatVersion
00000000000091d0 T _PyExpat_XML_ExpatVersionInfo
000000000000ca30 T _PyExpat_XML_ExternalEntityParserCreate
0000000000009120 T _PyExpat_XML_FreeContentModel
00000000000089f0 T _PyExpat_XML_GetBase
000000000000af10 T _PyExpat_XML_GetBuffer
0000000000008fc0 T _PyExpat_XML_GetCurrentByteCount
0000000000008f90 T _PyExpat_XML_GetCurrentByteIndex
00000000000090b0 T _PyExpat_XML_GetCurrentColumnNumber
0000000000009040 T _PyExpat_XML_GetCurrentLineNumber
0000000000008f80 T _PyExpat_XML_GetErrorCode
00000000000091f0 T _PyExpat_XML_GetFeatureList
0000000000008a10 T _PyExpat_XML_GetIdAttributeIndex
0000000000009000 T _PyExpat_XML_GetInputContext
0000000000008f70 T _PyExpat_XML_GetParsingStatus
0000000000008a00 T _PyExpat_XML_GetSpecifiedAttributeCount
0000000000009180 T _PyExpat_XML_MemFree
0000000000009140 T _PyExpat_XML_MemMalloc
0000000000009160 T _PyExpat_XML_MemRealloc
000000000000b0f0 T _PyExpat_XML_Parse
0000000000008c90 T _PyExpat_XML_ParseBuffer
000000000000c610 T _PyExpat_XML_ParserCreate
000000000000c660 T _PyExpat_XML_ParserCreateNS
000000000000c5c0 T _PyExpat_XML_ParserCreate_MM
000000000000a480 T _PyExpat_XML_ParserFree
000000000000bb90 T _PyExpat_XML_ParserReset
0000000000008e80 T _PyExpat_XML_ResumeParser
0000000000008c20 T _PyExpat_XML_SetAttlistDeclHandler
000000000000b6c0 T _PyExpat_XML_SetBase
0000000000008a80 T _PyExpat_XML_SetCdataSectionHandler
0000000000008a50 T _PyExpat_XML_SetCharacterDataHandler
0000000000008a70 T _PyExpat_XML_SetCommentHandler
0000000000008ac0 T _PyExpat_XML_SetDefaultHandler
0000000000008ae0 T _PyExpat_XML_SetDefaultHandlerExpand
0000000000008b00 T _PyExpat_XML_SetDoctypeDeclHandler
0000000000008c10 T _PyExpat_XML_SetElementDeclHandler
0000000000008a20 T _PyExpat_XML_SetElementHandler
000000000000b780 T _PyExpat_XML_SetEncoding
0000000000008ab0 T _PyExpat_XML_SetEndCdataSectionHandler
0000000000008b30 T _PyExpat_XML_SetEndDoctypeDeclHandler
0000000000008a40 T _PyExpat_XML_SetEndElementHandler
0000000000008b90 T _PyExpat_XML_SetEndNamespaceDeclHandler
0000000000008c30 T _PyExpat_XML_SetEntityDeclHandler
0000000000008bb0 T _PyExpat_XML_SetExternalEntityRefHandler
0000000000008bc0 T _PyExpat_XML_SetExternalEntityRefHandlerArg
0000000000008b60 T _PyExpat_XML_SetNamespaceDeclHandler
0000000000008ba0 T _PyExpat_XML_SetNotStandaloneHandler
0000000000008b50 T _PyExpat_XML_SetNotationDeclHandler
0000000000008c50 T _PyExpat_XML_SetParamEntityParsing
0000000000008a60 T _PyExpat_XML_SetProcessingInstructionHandler
00000000000089a0 T _PyExpat_XML_SetReturnNSTriplet
0000000000008be0 T _PyExpat_XML_SetSkippedEntityHandler
0000000000008aa0 T _PyExpat_XML_SetStartCdataSectionHandler
0000000000008b20 T _PyExpat_XML_SetStartDoctypeDeclHandler
0000000000008a30 T _PyExpat_XML_SetStartElementHandler
0000000000008b80 T _PyExpat_XML_SetStartNamespaceDeclHandler
0000000000008bf0 T _PyExpat_XML_SetUnknownEncodingHandler
0000000000008b40 T _PyExpat_XML_SetUnparsedEntityDeclHandler
00000000000089c0 T _PyExpat_XML_SetUserData
0000000000008c40 T _PyExpat_XML_SetXmlDeclHandler
0000000000008df0 T _PyExpat_XML_StopParser
0000000000008970 T _PyExpat_XML_UseForeignDTD
0000000000008960 T _PyExpat_XML_UseParserAsHandlerArg

See how they are part of object and prefixed.

You might do that same nm on pyexpat.so in your Python installation
and work out if local symbols or undefined, thus meaning they come
from external libexpat.so.

It almost seems that your pyexpat.so is using libexpat.so and so you
can get problems mentioned in that document.

Seems I will need to update that document to indicate that can occur
for latter Python versions if it was configured to use libexpat.so
instead of builtin code.

Graham

-- 
You received this message because you are subscribed to the Google Groups 
"modwsgi" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/modwsgi?hl=en.

Reply via email to