This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH v2] Bug 11941: Improper assert map->l_init_called in dlclose
On 12/23/2016 05:37 AM, Florian Weimer wrote:
> On 12/22/2016 09:47 PM, Carlos O'Donell wrote:
>
>> s/plugin/plugin_func/g.
>
> GNU does not use “()” to mark function names:
>
> + destructed we will be calling dlclose() on an object that has already
> + been destructed. It is allowed to call dlclose() in this way and
> + hasn't called primary(), in that case do nothing. */
>
> There is still a missing space before the parameter list in a function pointer type:
>
> + plugin_func = (void (*)(void)) dlsym (plugin_lib, "plugin_func");
>
> Okay with these changes.
v5
- Removed () markup for function names.
- Fixed GNU style error.
Committed.
commit 57707b7fcc38855869321f8c7827bfe21d729f37
Author: Carlos O'Donell <carlos@redhat.com>
Date: Fri Dec 23 13:30:22 2016 -0500
Bug 11941: ld.so: Improper assert map->l_init_called in dlclose
There is at least one use case where during exit a library destructor
might call dlclose() on a valid handle and have it fail with an
assertion. We must allow this case, it is a valid handle, and dlclose()
should not fail with an assert. In the future we might be able to return
an error that the dlclose() could not be completed because the opened
library has already been unloaded and destructors have run as part of
exit processing.
For more details see:
https://www.sourceware.org/ml/libc-alpha/2016-12/msg00859.html
--
Cheers,
Carlos.