[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