This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: dlclose() doesn't unload any .so that uses Boost
On Tue, May 31, 2011 at 12:17 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> On Tue, May 31, 2011 at 08:43:45AM +0200, J wrote:
>> I've managed to track this issue down. It looks like a bug in GCC:
>
> Most likely the difference is just that g++-4.6 emits STB_GNU_UNIQUE
> symbols while g++-4.4 doesn't. ?And, when any STB_GNU_UNIQUE symbols
> are resolved against some library, it is marked as nodelete.
> Therefore, NOTABUG.
On the GCC mailing list I've been told that this should only happen if
there is in fact some reference to the symbol from some other shared
library, and I'm not referencing boost::signals at all from the host,
so shouldn't it properly unload? If the host doesn't touch that
particular symbol in the unique symbols table and doesn't link to any
library that uses that symbol besides libchild shouldn't libchild be
allowed to unload?
This looks like a bug to me, but what do I know; if this won't be
fixed then I'll guess I'll be doing s/gnu_unique_object/object/ on the
assembly from now on.
Thanks.