Am Dienstag, 29. Dezember 2009 21:10:51 schrieb robert:
> > I have implemented this change here already but not yet checked in. For
> > my suprise tntnet is able to catch a exception in both cases. Look like
> > gcc (or glibc - I don't know, who is responsible for this) have fixed
> > that bug.
> >
> > Tommi
> 
> The exception handling appears to have been fixed quite a while ago, and
> has remained resolved through several updates of gcc/glibc.
> Unfortunately I have no idea when it was resolved or if it was a fix to
> the compiler or std lib.
> 
> > So users will be able to choose even per library, which loading mechanism
> > to use. Tntnet has already this catch(...)-case.
> 
> While the "!" solution will give flexibility for those who require
> RTLD_GLOBAL behaviour, it would be best to default to RTLD_LOCAL for
> both consistency and safety reasons unless the user chooses otherwise.
> Normally, C++ is always defaulted to RTLD_LOCAL (or equivalent across
> platforms), therefore RTLD_LOCAL is the expected behaviour unless one
> takes the effort to make it behave differently. Using RTLD_GLOBAL as a
> default setting is inherently dangerous, especially for those who don't
> fully understand what this flag does and what the potential problems are
> with using it - the bugs you can get are very nasty, and if you are
> unaware of the issue, the reason for the bugs can be very difficult to
> figure out.
> 
> In our case I'm comfortable with either setting as a default because I'm
> fully aware of the situation, however other users who are expecting the
> usual default RTLD_LOCAL behaviour may run into the same problems we
> had, and this may result in people considering other solutions if they
> cannot resolve the problem quickly.
> 
> Whatever you decide to do, I suggest that you update the documentation
> to make this issue very clear to your users, and also put a note in the
> tntnet.conf file since new tntnet users will probably not fully
> understand the situation even if they read the whole manual.
> 
> I'm looking forward to having this resolved.
> 
> Thanks!
> 
> Robert
> 
Thank you for your feedback. I feel, that the old behaviour of gcc not 
recognizing exceptions correctly with RTLD_GLOBAL was actually a bug in gcc 
(or glibc or whereever else). So using RTLD_GLOBAL is a workaround for a bug, 
which is fixed. I will change the default to RTLD_LOCAL. I see no need for 
RTLD_GLOBAL any more. I make it optional using this "!" solution just if 
somebody insists using it.

Tommi

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
Tntnet-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tntnet-general

Reply via email to