RHS Python 1.5.2 RPM and RTLD_GLOBAL

Stephen J. Turner sjturner at ix.netcom.com
Tue Jan 4 16:25:17 CET 2000


The Python 1.5.2 RPM from Red Hat Software (included with RH Linux 6.1)
apparently still uses the dlopen() RTLD_GLOBAL flag when importing
shared object extensions.  The use of RTLD_GLOBAL -- which made global
symbols exported by dynamically loaded extension modules visible to
other shared objects -- was introduced with Python 1.5b2 but later
removed as of 1.5.2a1.

Red Hat's decision to retain this "feature" has a potentially adverse
effect on any RH 6.1 users of the informixdb DBAPI module.  It so
happens that one of Informix's runtime libraries contains a function
named "initsocket" -- most unfortunate, since this is also the name of
the Python socket module's initialization routine.  If the user imports
socket before informixdb, then when the Informix runtime tries to call
its own initsocket, it winds up in the wrong function.  Bad things

Have any other Python extensions been similarly affected?  And does
anyone know why RHS chose to keep the pre-1.5.2 import behavior?

Stephen J. Turner <sjturner at ix.netcom.com>

More information about the Python-list mailing list