Bug 11941: ld.so: Improper assert map->l_init_called in dlclose
commit57707b7fcc38855869321f8c7827bfe21d729f37
authorCarlos O'Donell <carlos@redhat.com>
Fri, 23 Dec 2016 18:30:22 +0000 (23 13:30 -0500)
committerCarlos O'Donell <carlos@redhat.com>
Fri, 23 Dec 2016 18:30:22 +0000 (23 13:30 -0500)
tree35c04e405d4e374096095f88af4c2408d90392e6
parentb064bba552e38e08a69a91424247ae67de493345
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
ChangeLog
elf/Makefile
elf/dl-close.c
elf/tst-nodelete-dlclose-dso.c [new file with mode: 0644]
elf/tst-nodelete-dlclose-plugin.c [new file with mode: 0644]
elf/tst-nodelete-dlclose.c [new file with mode: 0644]