Commit
When building against glibc 2.24 or earlier, suppress calls to dlclose() to prevent the assertion failure "_dl_close: Assertion `map->l_init_called' failed" at process exit. We need this workaround to enable automated tests that load GSSAPI modules. ticket: 7135
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -54,6 +54,21 @@ | |
#define PLUGIN_DLOPEN_FLAGS (RTLD_NOW | RTLD_LOCAL | GROUP | NODELETE) | ||
#endif | ||
|
||
/* | ||
* glibc bug 11941, fixed in release 2.25, can cause an assertion failure in | ||
* dlclose() on process exit. Our workaround is to leak dlopen() handles | ||
* (which doesn't typically manifest in leak detection tools because the | ||
* handles are still reachable via a global table in libdl). Because we | ||
* dlopen() with RTLD_NODELETE, we weren't going to unload the plugin objects | ||
* anyway. | ||
*/ | ||
#ifdef __linux__ | ||
#include <features.h> | ||
#if ! __GLIBC_PREREQ(2, 25) | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
AndreRH
|
||
#define dlclose(x) | ||
#endif | ||
#endif | ||
|
||
#if USE_DLOPEN && USE_CFBUNDLE | ||
#include <CoreFoundation/CoreFoundation.h> | ||
|
||
|
With this change krb5 v1.18 can not be build against musl libc without patching.