Hi, I am stuck on the following dynamic linking problem: python-expat has a pyexpat.so module that contains a complete expat implementation (1.95.8). Now there is the _cairo.so python that depends on libcairo.so and libfreetype.so (found in /usr/X11R6/lib) which in turn is linked to /usr/X11R6/lib/libexpat.so.5.0 (1.95.6). With python on amd64...
>>> import pyexpat; import cairo ... seems to work (maybe not for long though), but... >>> import cairo; import pyexpat ... segfaults during pyexpat importation, because pyexpat init code calls an XML_* function that is resolved in libexpat.so.5.0 (dlopen-ed by cairo.so) instead of pyexpat.so. The funny thing is that problem does not happen on powerpc. So, I suspect that this is a "feature" of the dynamic linker, using a wrong search path for symbols on amd64. I have tried to investigate a bit but I am not knowledgeable enough about the linking business. Anyway, I have traced of the ld.so activity for the different cases: (names are <platform>-<fisrt import>-<second import>) http://ekyo.nerim.net/openbsd/ The segfault happens at pyexpat.c:1970 "MYCONST(XML_ERROR_UNBOUND_PREFIX);". XML_ErrorString() returns NULL in /usr/X11R6/lib/libexpat.so.5.0, crashing strlen later. Eric.