4ef75f147a
dlclose() call may unload the object of the outer call prematurely because objects are unreferenced before _fini() calls. Fix this by unreferencing objects after calling objlist_call_fini() in dlclose(). Therefore objlist_call_fini() now calls the fini function if the reference count of an object is 1. In addition we must restart the list_fini traversal after every _fini() call because another dlclose() call might have modified the reference counts. Add an XXX comment to objlist_call_fini() about possible race with dlopen(). PR: 133246, 149464 Reviewed by: kan, kib |
||
---|---|---|
.. | ||
amd64 | ||
arm | ||
i386 | ||
ia64 | ||
mips | ||
powerpc | ||
powerpc64 | ||
sparc64 | ||
debug.c | ||
debug.h | ||
libmap.c | ||
libmap.h | ||
Makefile | ||
malloc.c | ||
map_object.c | ||
rtld_lock.c | ||
rtld_lock.h | ||
rtld_tls.h | ||
rtld.1 | ||
rtld.c | ||
rtld.h | ||
Symbol.map | ||
xmalloc.c |