[C++-sig] dynamic linking in Linux

Niall Douglas s_sourceforge at nedprod.com
Fri Jul 23 15:35:28 CEST 2010

On 23 Jul 2010 at 0:08, Jim Bosch wrote:

> I've just run into the "wontfix" problem detailed here:
> https://svn.boost.org/trac/boost/ticket/3210
> Essentially, shared information held in one module (such as RTTI stuff 
> needed for dynamic cast) isn't available to another module, leading to 
> segfaults.
> [snip]
> Another similar option, using sys.setdlopenflags, seems to be less 
> favored because the dl module needed to get the flags has been 
> deprecated in Python itself.
> Is this just the current state of things?  Are there any efforts 
> underway to improve matters?  Or was I on track in the first case, and I 
> was just doing it wrong?

I am sorry to hear that this is STILL a problem so many years later 
(it was a change I submitted to GCC back in 2005 which created this 
problem). My advice then as it is now is to change the default 
dlopenflags to RTLD_GLOBAL across the Python language - it is the 
only sane choice. I would even go so far as to say that RTLD_LOCAL 
needs deprecating in GNU libc.

If you search Google for "dlopenflags python" you will see tales of 
woe and misoperation going back eight years now. My view is that 
Guido should simply impose RTLD_GLOBAL on Python and if people's 
extension modules break then they should be excluded from the core 
build until they are fixed.

Laziness is bad enough anywhere in the world, but laziness which 
wastes productivity for hundreds, perhaps thousands of busy and time 
valuable people is inexcusable. This problem has been allowed to 
fester for far too long, and it particularly annoys me because it is 
very easy to fix.

Sorry for your particular woes, and I do apologise for my part in 
causing them.


Technology & Consulting Services - ned Productions Limited.
http://www.nedproductions.biz/. VAT reg: IE 9708311Q. Company no: 

More information about the Cplusplus-sig mailing list