This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libstdc++/42679] RTLD_DEEPBIND dlopen option for shared library that uses libstdc++ std::ostream crashes
- From: "gauryogesh.nsit at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 02 Jan 2013 01:41:19 +0000
- Subject: [Bug libstdc++/42679] RTLD_DEEPBIND dlopen option for shared library that uses libstdc++ std::ostream crashes
- Auto-submitted: auto-generated
- References: <bug-42679-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42679
Yogesh Gaur <gauryogesh.nsit at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |gauryogesh.nsit at gmail
| |dot com
--- Comment #20 from Yogesh Gaur <gauryogesh.nsit at gmail dot com> 2013-01-02 01:41:19 UTC ---
Hello Jakub and Jason,
Did we get any solution for this reported bugzilla.
Actually I also have faced similar issue while loading my library using dlopen
by passing RTLD_DEEPBIND flag.
When I didn't pass this flag, no issues occurs and program run fine.
I am using glibc-2.14.
output with LD_DEBUG=all for both (crash and working) case :
==================================================================
WITH RTLD_DEEPBIND flag
Linux#> LD_DEBUG=all ./main_db 2>&1 | grep _ZSt4cerr
424: symbol=_ZSt4cerr; lookup in file=./main_db [0]
424: binding file /lib/libstdc++.so.6 [0] to ./main_db [0]: normal
symbol `_ZSt4cerr' [GLIBCXX_3.4]
424: symbol=_ZSt4cerr; lookup in file=/lib/libdl.so.2 [0]
424: symbol=_ZSt4cerr; lookup in file=/lib/libstdc++.so.6 [0]
424: binding file ./main_db [0] to /lib/libstdc++.so.6 [0]: normal
symbol `_ZSt4cerr' [GLIBCXX_3.4]
424: symbol=_ZSt4cerr; lookup in file=./library.so [0]
424: symbol=_ZSt4cerr; lookup in file=/lib/libstdc++.so.6 [0]
424: binding file ./library.so [0] to /lib/libstdc++.so.6 [0]:
normal symbol `_ZSt4cerr' [GLIBCXX_3.4] //--> This is problematic scenario here
as binding of this symbol is done with libstdc++.so.6
==================================================================
WITHOUT RTLD_DEEPBIND flag
Linux#> LD_DEBUG=all ./main_ndb 2>&1 | grep _ZSt4cerr
427: symbol=_ZSt4cerr; lookup in file=./main_ndb [0]
427: binding file /lib/libstdc++.so.6 [0] to ./main_ndb [0]: normal
symbol `_ZSt4cerr' [GLIBCXX_3.4]
427: symbol=_ZSt4cerr; lookup in file=/lib/libdl.so.2 [0]
427: symbol=_ZSt4cerr; lookup in file=/lib/libstdc++.so.6 [0]
427: binding file ./main_ndb [0] to /lib/libstdc++.so.6 [0]: normal
symbol `_ZSt4cerr' [GLIBCXX_3.4]
427: symbol=_ZSt4cerr; lookup in file=./main_ndb [0]
427: binding file ./library.so [0] to ./main_ndb [0]: normal symbol
`_ZSt4cerr' [GLIBCXX_3.4] // --> Here proper binding happen and binding of
library.so is done with main_ndb executable.
==================================================================
Please let me know if there is any solution for this long reported issue. I
need to use RTLD_DEEPBIND flag.