Searched hist:149464 (Results 1 - 1 of 1) sorted by relevance
/freebsd-9.3-release/libexec/rtld-elf/ | ||
H A D | rtld.c | diff 216489 Thu Dec 16 15:00:24 MST 2010 jh If dlclose() is called recursively from a _fini() function, the inner 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 |
Completed in 210 milliseconds