[Bug libstdc++/42679] RTLD_DEEPBIND dlopen option for shared library that uses libstdc++ std::ostream crashes
mjtruog at fastmail dot ca
gcc-bugzilla@gcc.gnu.org
Sun Mar 7 17:53:00 GMT 2010
------- Comment #17 from mjtruog at fastmail dot ca 2010-03-07 17:53 -------
I have found this doesn't fix the problem. It may fix the problem in the
example, but not in all cases. I have a few new crash dumps:
Core was generated by `_release/lib/cloud-0.0.9/priv/cloud_worker_port'.
Program terminated with signal 6, Aborted.
[New process 10276]
[New process 10273]
[New process 10277]
#0 0x00002b766a9a7015 in raise () from /lib/libc.so.6
(gdb) back
#0 0x00002b766a9a7015 in raise () from /lib/libc.so.6
#1 0x00002b766a9a8b83 in abort () from /lib/libc.so.6
#2 0x00002b766a9e80c8 in __libc_message () from /lib/libc.so.6
#3 0x00002b766a9eda58 in malloc_printerr () from /lib/libc.so.6
#4 0x00002b766a9f00a6 in free () from /lib/libc.so.6
#5 0x00002b766ad8758e in std::string::_M_mutate (this=0x407f0ea0, __pos=0,
__len1=0, __len2=32)
at
/home/.../src/lib/g++/releases/gcc-4.4.2/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/basic_string.h:231
#6 0x00002b766ad875dc in std::string::_M_replace_safe (this=0x2821,
__pos1=10276, __n1=6, __s=0x407f0741 "243f6a8885a308d313198a2e03707344",
__n2=47787595689792)
at
/home/.../src/lib/g++/releases/gcc-4.4.2/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/basic_string.tcc:662
#7 0x00002aaaaaab2445 in bbp_pi (abortTask=<value optimized out>,
digitIndex=<value optimized out>, digitStep=<value optimized out>,
piSequence=<value optimized out>)
at lib/cloud_job_tests/src/piqpr8_gmp.cpp:241
#8 0x00002aaaaaab05db in do_work (abortTask=@0x12387a2,
workInstance=<value optimized out>, id=<value optimized out>,
taskData=@0x1226ca0, taskDataSize=10, queriesOut=@0x407f0f70)
at lib/cloud_job_tests/src/cloud_job_tests.cpp:145
#9 0x000000000041390d in
WorkerController::WorkerExecution::ThreadPool::ThreadFunctionObject::operator()
(this=0x407f1040, stopped=@0x12387a2,
allocator=<value optimized out>)
at lib/cloud_worker/src/worker_execution.cpp:501
warning: (Internal error: pc 0x419054 in read in psymtab, but not in symtab.)
warning: (Internal error: pc 0x419054 in read in psymtab, but not in symtab.)
#10 0x0000000000419055 in
boost::detail::thread_data<WorkerController::WorkerExecution::ThreadPool::ThreadObject>::run
(this=<value optimized out>)
at lib/cloud_worker/src/worker_execution.cpp:236
warning: (Internal error: pc 0x419054 in read in psymtab, but not in symtab.)
warning: (Internal error: pc 0x418fa0 in read in psymtab, but not in symtab.)
#11 0x00002b7669b05870 in thread_proxy ()
from
/home/.../src/lib/boost/releases/boost_1_42_0_install/lib/libboost_thread.so.1.42.0
#12 0x00002b766b27a3ea in start_thread () from /lib/libpthread.so.0
#13 0x00002b766aa5acbd in clone () from /lib/libc.so.6
#14 0x0000000000000000 in ?? ()
(gdb)
I also continue to reproduce the same stderr problem (in debug mode):
Core was generated by `_release/lib/cloud-0.0.9/priv/cloud_worker_port'.
Program terminated with signal 11, Segmentation fault.
[New process 11089]
[New process 11090]
#0 sentry (this=0x7fff4a32a8d0, __os=@0x2abb61e70c20)
at
/home/.../src/lib/g++/releases/gcc-4.4.2/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/ostream.tcc:51
51 if (__os.tie() && __os.good())
(gdb) back
#0 sentry (this=0x7fff4a32a8d0, __os=@0x2abb61e70c20)
at
/home/.../src/lib/g++/releases/gcc-4.4.2/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/ostream.tcc:51
#1 0x00002abb61c15048 in std::__ostream_insert<char, std::char_traits<char> >
(__out=@0x2abb61e70c20, __s=<value optimized out>, __n=47)
at
/home/.../src/lib/g++/releases/gcc-4.4.2/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/ostream_insert.h:80
#2 0x00002abb61c1544f in operator<< <std::char_traits<char> > (
__out=@0x2abb61e70c20,
__s=0x2aaaaaab7360 "cloud_job_tests global/static data initialize()")
at
/home/.../src/lib/g++/releases/gcc-4.4.2/x86_64-unknown-linux-gnu/libstdc++-v3/include/ostream:510
#3 0x00002aaaaaab30d6 in initialize ()
at lib/cloud_job_tests/src/cloud_job_tests.cpp:100
#4 0x00002aaaaaab7326 in __do_global_ctors_aux ()
from _release/lib/cloud-0.0.9/priv/work_types/libcloud_job_tests.so
#5 0x00002aaaaaab2423 in _init ()
from _release/lib/cloud-0.0.9/priv/work_types/libcloud_job_tests.so
#6 0x00002abb00000000 in ?? ()
#7 0x00002abb60781a20 in _dl_init_internal () from /lib64/ld-linux-x86-64.so.2
#8 0x00002abb6078649a in dl_open_worker () from /lib64/ld-linux-x86-64.so.2
#9 0x00002abb60781676 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2
#10 0x00002abb60785b2b in _dl_open () from /lib64/ld-linux-x86-64.so.2
#11 0x00002abb611e8f5b in dlopen_doit () from /lib/libdl.so.2
#12 0x00002abb60781676 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2
#13 0x00002abb611e92cc in _dlerror_run () from /lib/libdl.so.2
#14 0x00002abb611e8ec1 in dlopen@@GLIBC_2.2.5 () from /lib/libdl.so.2
#15 0x0000000000425f17 in library (this=0x172a970, name=@0x7fff4a32ae60)
at lib/cloud_worker/src/library.cpp:68
#16 0x0000000000417cec in WorkerController::WorkerExecution::input (
this=0x672218, pTask=@0x7fff4a32b518)
at lib/cloud_worker/src/worker_execution.cpp:574
#17 0x000000000040f379 in WorkerController::WorkerQuery::store (this=0x672258,
ptr=@0x7fff4a32b518) at lib/cloud_worker/src/worker_controller.cpp:432
#18 0x00000000004100aa in WorkerController::store (this=0x6721c0,
ptr=@0x7fff4a32b518) at lib/cloud_worker/src/worker_controller.hpp:195
#19 0x000000000040e278 in WorkerController::receive_work (this=0x6721c0, fd=8)
at lib/cloud_worker/src/worker_controller.cpp:244
#20 0x000000000040ba4f in handle_node_connection (index=5,
controller=@0x6721c0) at lib/cloud_worker/src/node_connections.cpp:499
#21 0x000000000040bc25 in NodeConnections::worker_loop (
buffer=0x7fff4a32b610 "", controller=@0x6721c0)
at lib/cloud_worker/src/node_connections.cpp:560
#22 0x000000000042587e in main (argv=0x7fff4a3336f8)
at lib/cloud_worker/src/cloud_worker.cpp:114
(gdb)
This is with using gcc for linking instead of g++.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42679
More information about the Gcc-bugs
mailing list