https://bugzilla.novell.com/show_bug.cgi?id=680125
https://bugzilla.novell.com/show_bug.cgi?id=680125#c0
Summary: dlclose() can not unload all dynamic libraries Classification: openSUSE Product: openSUSE 11.4 Version: Final Platform: Other OS/Version: Other Status: NEW Severity: Major Priority: P5 - None Component: Development AssignedTo: pth@novell.com ReportedBy: gotterdammerung@web.de QAContact: qa@suse.de Found By: --- Blocker: ---
Created an attachment (id=419657) --> (http://bugzilla.novell.com/attachment.cgi?id=419657) test program which opens a dl from cmdline, closes it and checks if it is still open
User-Agent: Mozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.9.2.15) Gecko/20110310 Gentoo Firefox/3.6.15
A call to dlclose() does not unload some dynamic libraries, even if the reference count drops to zero and no other loaded libraries use symbols in it. See attached test programm.
Some libraries like 'pthread' exhibit this behaviour and it propagates up the dependency chain.
This breaks programs which rely on reloading of affected dynamic libraries.
Reproducible: Always
Steps to Reproduce: 1. compile test program with 'g++ test.cpp -otest -ldl' 2. run 'for file in /usr/lib64/lib*.so; do ./test $file; done | grep failed'
Actual Results: see attachment #2
Expected Results: /usr/lib64/librt.so failed. (at least that is what happens on my gentoo machine)
AFAIK, x86_64 and x86 are both affected. Related: [[bugzilla:645652]]
https://bugzilla.novell.com/show_bug.cgi?id=680125
https://bugzilla.novell.com/show_bug.cgi?id=680125#c1
--- Comment #1 from John Doe gotterdammerung@web.de 2011-03-16 12:11:08 UTC --- Created an attachment (id=419659) --> (http://bugzilla.novell.com/attachment.cgi?id=419659) output of the test program
https://bugzilla.novell.com/show_bug.cgi?id=680125
https://bugzilla.novell.com/show_bug.cgi?id=680125#c2
John Doe gotterdammerung@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |gotterdammerung@web.de
--- Comment #2 from John Doe gotterdammerung@web.de 2011-03-16 12:17:37 UTC --- (In reply to comment #0) see attachment #419659
Related: Bug #645652
Here are the correct links. Btw: is there a way to edit above post? At least preview it before posting?
https://bugzilla.novell.com/show_bug.cgi?id=680125
https://bugzilla.novell.com/show_bug.cgi?id=680125#c
Philipp Thomas pth@novell.com changed:
What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|pth@novell.com |matz@novell.com
https://bugzilla.novell.com/show_bug.cgi?id=680125
https://bugzilla.novell.com/show_bug.cgi?id=680125#c3
Michael Matz matz@novell.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |matz@novell.com AssignedTo|matz@novell.com |pbaudis@novell.com Severity|Major |Critical
--- Comment #3 from Michael Matz matz@novell.com 2011-03-16 16:57:44 UTC --- Some libraries are expected to not be unloaded, they will have the NODELETE flag set, e.g.:
% readelf -d /usr/lib64/librt.so | grep DEL 0x000000006ffffffb (FLAGS_1) Flags: NODELETE
But indeed many of the other libs in your example should be able to be unloaded. E.g. libcurl.so. Indeed on a 11.3 they still were unloaded. Petr?
https://bugzilla.novell.com/show_bug.cgi?id=680125
https://bugzilla.novell.com/show_bug.cgi?id=680125#c4
Petr Baudis pbaudis@novell.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |NEEDINFO InfoProvider| |gotterdammerung@web.de
--- Comment #4 from Petr Baudis pbaudis@novell.com 2011-03-22 00:58:27 UTC --- I think this is something we should fix, and it was probably introduced by a fix for bug 657627 being too conservative - I have not realized that pthread is also NOLOAD, so the case where RTLD_LOCAL-loaded owner is held is quite more common than I feared. We will need to rebuild the NOLOAD scope instead.
At the same time, there is simply no guarantee by libc that dlclose() will actually unload the object. Which application tries to rely on this to reload other libraries? Knowing what is broken by this will also help me prioritize fixing this.
https://bugzilla.novell.com/show_bug.cgi?id=680125
https://bugzilla.novell.com/show_bug.cgi?id=680125#c
Philipp Thomas pth@novell.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |aj@suse.de AssignedTo|pth@novell.com |matz@novell.com
https://bugzilla.novell.com/show_bug.cgi?id=680125
https://bugzilla.novell.com/show_bug.cgi?id=680125#c6
John Doe gotterdammerung@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEEDINFO |NEW InfoProvider|gotterdammerung@web.de |
--- Comment #6 from John Doe gotterdammerung@web.de 2011-07-10 19:54:52 UTC --- Some application i wrote allows integrated run-time plugin developement. Reloading of altered plugins fails because of this bug. I am not aware of another application which is affected by this.
https://bugzilla.novell.com/show_bug.cgi?id=680125
https://bugzilla.novell.com/show_bug.cgi?id=680125#c
Michael Matz matz@novell.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Severity|Critical |Minor
https://bugzilla.novell.com/show_bug.cgi?id=680125
https://bugzilla.novell.com/show_bug.cgi?id=680125#c7
Fons Rademakers Fons.Rademakers@cern.ch changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |Fons.Rademakers@cern.ch
--- Comment #7 from Fons Rademakers Fons.Rademakers@cern.ch 2012-03-02 14:57:48 UTC --- Hi,
has anything been done about this issue? The ROOT program (http://root.cern.ch) used by the world wide community of High Energy Physicist (and especially at the CERN LHC) does not function properly on OpenSuSe due to this issue, see:
http://root.cern.ch/phpBB3/viewtopic.php?t=13859
It would be greatly appreciated if the issue can be reprioritized as OpenSuSe is the only platform that is broken in this way (works on all other Linuxes, Solaris, AIX, OSX, etc).
Cheers, Fons.
https://bugzilla.novell.com/show_bug.cgi?id=680125
https://bugzilla.novell.com/show_bug.cgi?id=680125#c9
Pat Saull patrick.saull@nrc-cnrc.gc.ca changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |patrick.saull@nrc-cnrc.gc.c | |a
--- Comment #9 from Pat Saull patrick.saull@nrc-cnrc.gc.ca 2012-03-15 18:22:26 UTC --- Hi,
Is anyone working on fixing this problem properly? As Fons Rademakers points out in comment 7 above, this will assuredly become a major issue as more and more particle physicists upgrade their opensuse version to 11.4. It has severely broken the analysis package (ROOT) that the members of that community (and a number of other communities like medical physics) use. Thanks.
Cheers, Pat
https://bugzilla.novell.com/show_bug.cgi?id=680125
https://bugzilla.novell.com/show_bug.cgi?id=680125#c12
--- Comment #12 from Bernhard Wiedemann bwiedemann@suse.com 2012-12-11 11:00:09 CET --- This is an autogenerated message for OBS integration: This bug (680125) was mentioned in https://build.opensuse.org/request/show/145050 Maintenance /
https://bugzilla.novell.com/show_bug.cgi?id=680125
https://bugzilla.novell.com/show_bug.cgi?id=680125#c13
--- Comment #13 from Swamp Workflow Management swamp@suse.de 2012-12-12 16:10:09 UTC --- openSUSE-RU-2012:1639-1: An update that has two recommended fixes can now be installed.
Category: recommended (low) Bug References: 680125,791676 CVE References: Sources used: openSUSE 12.2 (src): glibc-2.15-22.9.1
https://bugzilla.novell.com/show_bug.cgi?id=680125
https://bugzilla.novell.com/show_bug.cgi?id=680125#c14
Andreas Schwab schwab@suse.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |christoph.pesch@siemens.com
--- Comment #14 from Andreas Schwab schwab@suse.com 2012-12-13 15:40:15 CET --- *** Bug 645652 has been marked as a duplicate of this bug. *** http://bugzilla.novell.com/show_bug.cgi?id=645652
https://bugzilla.novell.com/show_bug.cgi?id=680125
https://bugzilla.novell.com/show_bug.cgi?id=680125#c15
Andreas Schwab schwab@suse.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #15 from Andreas Schwab schwab@suse.com 2012-12-13 15:49:55 CET --- Fixed in 12.2.
http://bugzilla.novell.com/show_bug.cgi?id=680125 http://bugzilla.novell.com/show_bug.cgi?id=680125#c16
Stanislav Brabec sbrabec@suse.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |sbrabec@suse.com
--- Comment #16 from Stanislav Brabec sbrabec@suse.com --- The last part of the bug was finally fixed properly in the glibc upstream:
https://sourceware.org/bugzilla/show_bug.cgi?id=11941