[cxx-abi-dev] Deleted virtual functions

Dennis Handly dhandly at cup.hp.com
Wed Jun 3 03:07:59 UTC 2009


>From: Lawrence Crowl <crowl at google.com>
>The intent was that type_infos for protected or private types be
>distinct between libraries.  Anything else would lead to unreliable combination
>of libraries.

Right.  Hopefully I mentioned that to Prem.

>From: Jason Merrill <jason at redhat.com>
>Talking about plugins reminds me of a different problem we've run into 
>on Linux: you have two plugins A and B that both link against the same 
>shared library C.  A and B are loaded with RTLD_LOCAL to avoid symbol 

This should be obvious.  RTLD_LOCAL is another evil linker option that
stabs C++ in the back.  ;-)
They go all the way back to cfront days.

>we've decided to go ahead with a solution that makes affected objects 
>unique through the whole loaded program regardless of RTLD_LOCAL;

How?  If the dynamic loader hides it, how can you make them unique
without some magic global repository of names?

>we have namespaces to deal with name collisions.
Jason

You mean you have lawyers handle it?  ;-)

>From: Sean Perry <perry at ca.ibm.com>
>that sounds exactly like the issue we are having with the
>boost/python.  I hadn't reached the point of isolating the problem to
>RTLD_LOCAL yet.  If you build two libraries with boost/python and load them
>in a python script and try to throw a predefined exception from one of the
>two the exception is not caught.

Yes, we have had customers complaining about not caught or dynamic_casts
not working, with RTLD_LOCAL.  I cringe when I see RTLD_LOCAL.  :-(



More information about the cxx-abi-dev mailing list