about summary refs log tree commit diff
path: root/ChangeLog
diff options
context:
space:
mode:
authorCarlos O'Donell <carlos@redhat.com>2016-12-23 13:30:22 -0500
committerCarlos O'Donell <carlos@redhat.com>2016-12-23 13:30:22 -0500
commit57707b7fcc38855869321f8c7827bfe21d729f37 (patch)
tree35c04e405d4e374096095f88af4c2408d90392e6 /ChangeLog
parentb064bba552e38e08a69a91424247ae67de493345 (diff)
downloadglibc-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--ChangeLog14
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