This is the mail archive of the
glibc-bugs@sources.redhat.com
mailing list for the glibc project.
[Bug libc/311] New: dlclose doesn't close all dependent libraries
- From: "carlo at alinoe dot com" <sourceware-bugzilla at sources dot redhat dot com>
- To: glibc-bugs at sources dot redhat dot com
- Date: 7 Aug 2004 21:21:33 -0000
- Subject: [Bug libc/311] New: dlclose doesn't close all dependent libraries
- Reply-to: sourceware-bugzilla at sources dot redhat dot com
I noted that when I dlopen a shared library which depends on
other libraries - then these other libraries are automatically
loaded as well; but, when then I dlclose this library - the
automatically loaded libraries are not all closed (only some).
This seems not what was intended, is that correct?
Example, using the application I am working on:
Before calling dlopen:
$ cat /proc/12219/maps | grep 'r-xp'
08048000-080a6000 r-xp 00000000 22:01 670016
/usr/src/edragon/edragon/build/src/edragon
40000000-40011000 r-xp 00000000 22:01 1504392
/usr/src/install/debug/lib/ld-2.3.3.so
40013000-40028000 r-xp 00000000 22:01 1527029
/usr/src/install/3.5.0-20040530/lib/libboost_filesystem-gcc-d-1_31.so.1.31.0
40029000-400c4000 r-xp 00000000 22:01 1527133
/usr/src/install/3.5.0-20040530/lib/libglib-2.0.so.0.400.4
400c5000-400c8000 r-xp 00000000 22:01 1527125
/usr/src/install/3.5.0-20040530/lib/libxsltwrapp.so.2
400ca000-400e5000 r-xp 00000000 22:01 1527123
/usr/src/install/3.5.0-20040530/lib/libxmlwrapp.so.5
400e6000-400f4000 r-xp 00000000 03:01 97771 /usr/lib/libexslt.so.0.8.4
400f5000-40124000 r-xp 00000000 03:01 97914 /usr/lib/libxslt.so.1.1.5
40125000-40206000 r-xp 00000000 03:01 98142 /usr/lib/libxml2.so.2.6.8
40218000-40228000 r-xp 00000000 03:01 98366 /usr/lib/libz.so.1.2.0.7
4022a000-40236000 r-xp 00000000 22:01 1504422
/usr/src/install/debug/lib/libpthread-0.10.so
4027b000-40302000 r-xp 00000000 22:01 1527127
/usr/src/install/3.5.0-20040530/lib/libcw.so.0.0.0
40309000-403b7000 r-xp 00000000 22:01 1527112
/usr/src/install/3.5.0-20040530/lib/libcwd.so.0.99.38
403bb000-403bd000 r-xp 00000000 22:01 1504410
/usr/src/install/debug/lib/libdl-2.3.3.so
403be000-40487000 r-xp 00000000 22:01 2950727
/usr/src/GNU/install/lib/libstdc++.so.6.0.0
40491000-404b1000 r-xp 00000000 22:01 1504405
/usr/src/install/debug/lib/libm-2.3.3.so
404b2000-404ba000 r-xp 00000000 22:01 2950722
/usr/src/GNU/install/lib/libgcc_s.so.1
404bc000-405a3000 r-xp 00000000 22:01 1504391
/usr/src/install/debug/lib/libc-2.3.3.so
40afc000-40b04000 r-xp 00000000 22:01 1504440
/usr/src/install/debug/lib/libnss_files-2.3.3.so
After calling dlopen("/usr/src/edragon/edragon/build/src/gui/.libs/gui.so.0"):
$ cat /proc/12219/maps | grep 'r-xp'
08048000-080a6000 r-xp 00000000 22:01 670016
/usr/src/edragon/edragon/build/src/edragon
40000000-40011000 r-xp 00000000 22:01 1504392
/usr/src/install/debug/lib/ld-2.3.3.so
40013000-40028000 r-xp 00000000 22:01 1527029
/usr/src/install/3.5.0-20040530/lib/libboost_filesystem-gcc-d-1_31.so.1.31.0
40029000-400c4000 r-xp 00000000 22:01 1527133
/usr/src/install/3.5.0-20040530/lib/libglib-2.0.so.0.400.4
400c5000-400c8000 r-xp 00000000 22:01 1527125
/usr/src/install/3.5.0-20040530/lib/libxsltwrapp.so.2
400ca000-400e5000 r-xp 00000000 22:01 1527123
/usr/src/install/3.5.0-20040530/lib/libxmlwrapp.so.5
400e6000-400f4000 r-xp 00000000 03:01 97771 /usr/lib/libexslt.so.0.8.4
400f5000-40124000 r-xp 00000000 03:01 97914 /usr/lib/libxslt.so.1.1.5
40125000-40206000 r-xp 00000000 03:01 98142 /usr/lib/libxml2.so.2.6.8
40218000-40228000 r-xp 00000000 03:01 98366 /usr/lib/libz.so.1.2.0.7
4022a000-40236000 r-xp 00000000 22:01 1504422
/usr/src/install/debug/lib/libpthread-0.10.so
4027b000-40302000 r-xp 00000000 22:01 1527127
/usr/src/install/3.5.0-20040530/lib/libcw.so.0.0.0
40309000-403b7000 r-xp 00000000 22:01 1527112
/usr/src/install/3.5.0-20040530/lib/libcwd.so.0.99.38
403bb000-403bd000 r-xp 00000000 22:01 1504410
/usr/src/install/debug/lib/libdl-2.3.3.so
403be000-40487000 r-xp 00000000 22:01 2950727
/usr/src/GNU/install/lib/libstdc++.so.6.0.0
40491000-404b1000 r-xp 00000000 22:01 1504405
/usr/src/install/debug/lib/libm-2.3.3.so
404b2000-404ba000 r-xp 00000000 22:01 2950722
/usr/src/GNU/install/lib/libgcc_s.so.1
404bc000-405a3000 r-xp 00000000 22:01 1504391
/usr/src/install/debug/lib/libc-2.3.3.so
40afc000-40b04000 r-xp 00000000 22:01 1504440
/usr/src/install/debug/lib/libnss_files-2.3.3.so
40bbd000-40be4000 r-xp 00000000 22:01 774821
/usr/src/edragon/edragon/build/src/gui/.libs/gui.so.0.0.0
40ef5000-412c8000 r-xp 00000000 22:01 1527003
/usr/src/install/3.5.0-20040530/lib/libgtk-x11-2.0.so.0.400.4
412d4000-41370000 r-xp 00000000 22:01 1527139
/usr/src/install/3.5.0-20040530/lib/libgdk-x11-2.0.so.0.400.4
41375000-41392000 r-xp 00000000 22:01 1526937
/usr/src/install/3.5.0-20040530/lib/libatk-1.0.so.0.600.1
41394000-413af000 r-xp 00000000 22:01 1527138
/usr/src/install/3.5.0-20040530/lib/libgdk_pixbuf-2.0.so.0.400.4
413b0000-413b5000 r-xp 00000000 22:01 1526913
/usr/src/install/3.5.0-20040530/lib/libpangoxft-1.0.so.0.399.1
413b6000-413c3000 r-xp 00000000 22:01 1526909
/usr/src/install/3.5.0-20040530/lib/libpangox-1.0.so.0.399.1
413c4000-41401000 r-xp 00000000 22:01 1526905
/usr/src/install/3.5.0-20040530/lib/libpango-1.0.so.0.399.1
41406000-4144d000 r-xp 00000000 22:01 1527134
/usr/src/install/3.5.0-20040530/lib/libgobject-2.0.so.0.400.4
4144f000-41452000 r-xp 00000000 22:01 1527135
/usr/src/install/3.5.0-20040530/lib/libgmodule-2.0.so.0.400.4
41453000-4152e000 r-xp 00000000 03:01 146538 /usr/X11R6/lib/libX11.so.6.2
41531000-41534000 r-xp 00000000 03:01 147402 /usr/X11R6/lib/libXrandr.so.2.0
41535000-41542000 r-xp 00000000 03:01 146577 /usr/X11R6/lib/libXext.so.6.4
41543000-41554000 r-xp 00000000 03:01 147263 /usr/X11R6/lib/libXft.so.2.1.1
41555000-415b3000 r-xp 00000000 03:01 98034 /usr/lib/libfreetype.so.6.3.5
415ba000-415c1000 r-xp 00000000 03:01 147404 /usr/X11R6/lib/libXrender.so.1.2.2
415c2000-415e5000 r-xp 00000000 03:01 98351 /usr/lib/libfontconfig.so.1.0.4
415e9000-415f1000 r-xp 00000000 03:01 146565 /usr/X11R6/lib/libXcursor.so.1.0
415f2000-41625000 r-xp 00000000 22:01 1526917
/usr/src/install/3.5.0-20040530/lib/libpangoft2-1.0.so.0.399.1
41626000-41644000 r-xp 00000000 03:01 98590 /usr/lib/libexpat.so.0.4.0
419fb000-419fd000 r-xp 00000000 03:01 505054
/usr/X11R6/lib/X11/locale/lib/common/xlcDef.so.2
419fe000-419ff000 r-xp 00000000 22:01 1514691
/usr/src/install/debug/lib/gconv/ISO8859-1.so
And then after calling dlclose() for that library:
$ cat /proc/12219/maps | grep 'r-xp'
08048000-080a6000 r-xp 00000000 22:01 670016
/usr/src/edragon/edragon/build/src/edragon
40000000-40011000 r-xp 00000000 22:01 1504392
/usr/src/install/debug/lib/ld-2.3.3.so
40013000-40028000 r-xp 00000000 22:01 1527029
/usr/src/install/3.5.0-20040530/lib/libboost_filesystem-gcc-d-1_31.so.1.31.0
40029000-400c4000 r-xp 00000000 22:01 1527133
/usr/src/install/3.5.0-20040530/lib/libglib-2.0.so.0.400.4
400c5000-400c8000 r-xp 00000000 22:01 1527125
/usr/src/install/3.5.0-20040530/lib/libxsltwrapp.so.2
400ca000-400e5000 r-xp 00000000 22:01 1527123
/usr/src/install/3.5.0-20040530/lib/libxmlwrapp.so.5
400e6000-400f4000 r-xp 00000000 03:01 97771 /usr/lib/libexslt.so.0.8.4
400f5000-40124000 r-xp 00000000 03:01 97914 /usr/lib/libxslt.so.1.1.5
40125000-40206000 r-xp 00000000 03:01 98142 /usr/lib/libxml2.so.2.6.8
40218000-40228000 r-xp 00000000 03:01 98366 /usr/lib/libz.so.1.2.0.7
4022a000-40236000 r-xp 00000000 22:01 1504422
/usr/src/install/debug/lib/libpthread-0.10.so
4027b000-40302000 r-xp 00000000 22:01 1527127
/usr/src/install/3.5.0-20040530/lib/libcw.so.0.0.0
40309000-403b7000 r-xp 00000000 22:01 1527112
/usr/src/install/3.5.0-20040530/lib/libcwd.so.0.99.38
403bb000-403bd000 r-xp 00000000 22:01 1504410
/usr/src/install/debug/lib/libdl-2.3.3.so
403be000-40487000 r-xp 00000000 22:01 2950727
/usr/src/GNU/install/lib/libstdc++.so.6.0.0
40491000-404b1000 r-xp 00000000 22:01 1504405
/usr/src/install/debug/lib/libm-2.3.3.so
404b2000-404ba000 r-xp 00000000 22:01 2950722
/usr/src/GNU/install/lib/libgcc_s.so.1
404bc000-405a3000 r-xp 00000000 22:01 1504391
/usr/src/install/debug/lib/libc-2.3.3.so
40afc000-40b04000 r-xp 00000000 22:01 1504440
/usr/src/install/debug/lib/libnss_files-2.3.3.so
41394000-413af000 r-xp 00000000 22:01 1527138
/usr/src/install/3.5.0-20040530/lib/libgdk_pixbuf-2.0.so.0.400.4
413b0000-413b5000 r-xp 00000000 22:01 1526913
/usr/src/install/3.5.0-20040530/lib/libpangoxft-1.0.so.0.399.1
413b6000-413c3000 r-xp 00000000 22:01 1526909
/usr/src/install/3.5.0-20040530/lib/libpangox-1.0.so.0.399.1
413c4000-41401000 r-xp 00000000 22:01 1526905
/usr/src/install/3.5.0-20040530/lib/libpango-1.0.so.0.399.1
41406000-4144d000 r-xp 00000000 22:01 1527134
/usr/src/install/3.5.0-20040530/lib/libgobject-2.0.so.0.400.4
4144f000-41452000 r-xp 00000000 22:01 1527135
/usr/src/install/3.5.0-20040530/lib/libgmodule-2.0.so.0.400.4
41453000-4152e000 r-xp 00000000 03:01 146538 /usr/X11R6/lib/libX11.so.6.2
41531000-41534000 r-xp 00000000 03:01 147402 /usr/X11R6/lib/libXrandr.so.2.0
41535000-41542000 r-xp 00000000 03:01 146577 /usr/X11R6/lib/libXext.so.6.4
41543000-41554000 r-xp 00000000 03:01 147263 /usr/X11R6/lib/libXft.so.2.1.1
41555000-415b3000 r-xp 00000000 03:01 98034 /usr/lib/libfreetype.so.6.3.5
415ba000-415c1000 r-xp 00000000 03:01 147404 /usr/X11R6/lib/libXrender.so.1.2.2
415c2000-415e5000 r-xp 00000000 03:01 98351 /usr/lib/libfontconfig.so.1.0.4
415e9000-415f1000 r-xp 00000000 03:01 146565 /usr/X11R6/lib/libXcursor.so.1.0
415f2000-41625000 r-xp 00000000 22:01 1526917
/usr/src/install/3.5.0-20040530/lib/libpangoft2-1.0.so.0.399.1
41626000-41644000 r-xp 00000000 03:01 98590 /usr/lib/libexpat.so.0.4.0
419fb000-419fd000 r-xp 00000000 03:01 505054
/usr/X11R6/lib/X11/locale/lib/common/xlcDef.so.2
419fe000-419ff000 r-xp 00000000 22:01 1514691
/usr/src/install/debug/lib/gconv/ISO8859-1.so
Nothing else was done in between... Note that the dlclose() did close SOME
libraries,
the difference is in fact:
- 40bbd000-40be4000 r-xp 00000000 22:01 774821
/usr/src/edragon/edragon/build/src/gui/.libs/gui.so.0.0.0
- 40ef5000-412c8000 r-xp 00000000 22:01 1527003
/usr/src/install/3.5.0-20040530/lib/libgtk-x11-2.0.so.0.400.4
- 412d4000-41370000 r-xp 00000000 22:01 1527139
/usr/src/install/3.5.0-20040530/lib/libgdk-x11-2.0.so.0.400.4
- 41375000-41392000 r-xp 00000000 22:01 1526937
/usr/src/install/3.5.0-20040530/lib/libatk-1.0.so.0.600.1
But the following libraries were added but not removed anymore:
+ 41394000-413af000 r-xp 00000000 22:01 1527138
/usr/src/install/3.5.0-20040530/lib/libgdk_pixbuf-2.0.so.0.400.4
+ 413b0000-413b5000 r-xp 00000000 22:01 1526913
/usr/src/install/3.5.0-20040530/lib/libpangoxft-1.0.so.0.399.1
+ 413b6000-413c3000 r-xp 00000000 22:01 1526909
/usr/src/install/3.5.0-20040530/lib/libpangox-1.0.so.0.399.1
+ 413c4000-41401000 r-xp 00000000 22:01 1526905
/usr/src/install/3.5.0-20040530/lib/libpango-1.0.so.0.399.1
+ 41406000-4144d000 r-xp 00000000 22:01 1527134
/usr/src/install/3.5.0-20040530/lib/libgobject-2.0.so.0.400.4
+ 4144f000-41452000 r-xp 00000000 22:01 1527135
/usr/src/install/3.5.0-20040530/lib/libgmodule-2.0.so.0.400.4
+ 41453000-4152e000 r-xp 00000000 03:01 146538 /usr/X11R6/lib/libX11.so.6.2
+ 41531000-41534000 r-xp 00000000 03:01 147402 /usr/X11R6/lib/libXrandr.so.2.0
+ 41535000-41542000 r-xp 00000000 03:01 146577 /usr/X11R6/lib/libXext.so.6.4
+ 41543000-41554000 r-xp 00000000 03:01 147263 /usr/X11R6/lib/libXft.so.2.1.1
+ 41555000-415b3000 r-xp 00000000 03:01 98034 /usr/lib/libfreetype.so.6.3.5
+ 415ba000-415c1000 r-xp 00000000 03:01 147404
/usr/X11R6/lib/libXrender.so.1.2.2
+ 415c2000-415e5000 r-xp 00000000 03:01 98351 /usr/lib/libfontconfig.so.1.0.4
+ 415e9000-415f1000 r-xp 00000000 03:01 146565 /usr/X11R6/lib/libXcursor.so.1.0
+ 415f2000-41625000 r-xp 00000000 22:01 1526917
/usr/src/install/3.5.0-20040530/lib/libpangoft2-1.0.so.0.399.1
+ 41626000-41644000 r-xp 00000000 03:01 98590 /usr/lib/libexpat.so.0.4.0
+ 419fb000-419fd000 r-xp 00000000 03:01 505054
/usr/X11R6/lib/X11/locale/lib/common/xlcDef.so.2
+ 419fe000-419ff000 r-xp 00000000 22:01 1514691
/usr/src/install/debug/lib/gconv/ISO8859-1.so
Those are so to say "leaking" ...
Is there anything I should do to get those libs to close too?
Do you want me to test something (I have a libc with debugging info
around too).
--
Summary: dlclose doesn't close all dependent libraries
Product: glibc
Version: 2.3.3
Status: NEW
Severity: normal
Priority: P2
Component: libc
AssignedTo: gotom at debian dot or dot jp
ReportedBy: carlo at alinoe dot com
CC: glibc-bugs at sources dot redhat dot com
http://sources.redhat.com/bugzilla/show_bug.cgi?id=311
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.