This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug libc/12561] New: ld.so: dlclose() can remove required local scope elements of NODELETE linkmaps
- From: "pasky at suse dot cz" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sources dot redhat dot com
- Date: Thu, 10 Mar 2011 02:20:09 +0000
- Subject: [Bug libc/12561] New: ld.so: dlclose() can remove required local scope elements of NODELETE linkmaps
- Auto-submitted: auto-generated
http://sourceware.org/bugzilla/show_bug.cgi?id=12561
Summary: ld.so: dlclose() can remove required local scope
elements of NODELETE linkmaps
Product: glibc
Version: 2.13
Status: NEW
Severity: normal
Priority: P2
Component: libc
AssignedTo: drepper.fsp@gmail.com
ReportedBy: pasky@suse.cz
Created attachment 5283
--> http://sourceware.org/bugzilla/attachment.cgi?id=5283
proposed patch, incl. testcase
In case a library is opened with RTLD_LOCAL, dlclose()ing that library
will remove the local scope from all subsequently loaded libraries
unconditionally, even though such a library is marked as RTLD_NODELETE.
This causes subsequent lookups within that library to fail if the
library depends on other libraries than those already loaded within
the global scope.
This has been exposed in a real-world case where libproxy opens
a KDE4 plugin with RTLD_LOCAL, the plugin depends on libkde4_core
and libkde4_core is marked as NODELETE due to having a STB_GNU_UNIQ
symbol; the plugin is dlclose()d later but ld.so raises a fatal
error when libkde4_core global destructor is called (it depends
on libqt4, but libqt4 has been in the plugin's local scope only
and is gone now).
--
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.