]> git.ipfire.org Git - thirdparty/glibc.git/commit
Bug 11941: ld.so: Improper assert map->l_init_called in dlclose
authorCarlos O'Donell <carlos@redhat.com>
Fri, 23 Dec 2016 18:30:22 +0000 (13:30 -0500)
committerMike Frysinger <vapier@gentoo.org>
Fri, 30 Dec 2016 06:55:30 +0000 (01:55 -0500)
commit88849c6b0ff4cb1c7840a7071bc9f6fa3c984d3e
tree8e0e5de1a2affd12ef23fa954611dff653cc2f93
parentb73ec923c79ab493a9265930a45800391329571a
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

(cherry picked from commit 57707b7fcc38855869321f8c7827bfe21d729f37)
(cherry picked from commit e9e69e468039fcd57276f783a16aa771a8e4214e)
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]