diff options
author | Carlos O'Donell <carlos@redhat.com> | 2016-12-23 13:30:22 -0500 |
---|---|---|
committer | Carlos O'Donell <carlos@redhat.com> | 2016-12-23 13:30:22 -0500 |
commit | 57707b7fcc38855869321f8c7827bfe21d729f37 (patch) | |
tree | 35c04e405d4e374096095f88af4c2408d90392e6 /ChangeLog | |
parent | b064bba552e38e08a69a91424247ae67de493345 (diff) | |
download | glibc-57707b7fcc38855869321f8c7827bfe21d729f37.tar.gz glibc-57707b7fcc38855869321f8c7827bfe21d729f37.tar.xz glibc-57707b7fcc38855869321f8c7827bfe21d729f37.zip |
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
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index 04d4971005..8c6ebd2365 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2016-12-24 Carlos O'Donell <carlos@redhat.com> + + [BZ #11941] + * elf/dl-close.c (_dl_close): Take dl_load_lock to examine map. + Remove assert (map->l_init_called); if DF_1_NODELETE is set. + * elf/Makefile [ifeq (yes,$(build-shared))] (tests): Add + tst-nodelete-dlclose. + (modules-names): Add tst-nodelete-dlclose-dso and + tst-nodelete-dlclose-plugin. + ($(objpfx)tst-nodelete-dlclose-dso.so): Define. + ($(objpfx)tst-nodelete-dlclose-plugin.so): Define. + ($(objpfx)tst-nodelete-dlclose): Define. + ($(objpfx)tst-nodelete-dlclose.out): Define. + 2016-12-23 Florian Weimer <fweimer@redhat.com> * scripts/test_printers_common.py: Log GDB output in case of |