This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: C++ STL code not reentrant


It looks like you didn't specify --enable-threads when building the compiler and libraries.
The first template argument of __default_alloc_template set to false is a dead giveaway.


Dima

Alex Ivanov wrote:

> COMPILER: c++ 2.95.2
>
> SYSTEM: SunOS sargas 5.7 Generic_106541-10 sun4u sparc SUNW,Ultra-4
>
> COMPILER OPTIONS:
>
> c++ -D_PTHREADS -D_REENTRANT  -DHAVE_CONFIG_H -I.
> -I/home/aivanov/ldas/lib/framecpp/src -I. -I../../../include
> -I../../../lib/general/src -I../../../include -Wall -I../../../include
> -I../../../lib/general/src -I../../../include -Wall -g -O2
> -I/ldcg/include -Wp,-MD,.deps/tocreader.pp -c  -fPIC -DPIC
> /home/aivanov/ldas/lib/framecpp/src/tocreader.cc -o .libs/tocreader.lo
>
> PROBLEM:
>
> multithreaded program crashes unless code is synchronized with a mutex.
> In other words, code is not reentrant. It always happens  in string
> memory allocation . Are strings not reentrant?
>
> Here is what the stack looks like:
>
> FIRST THREAD:
> #0  0xfeda1224 in seg5 () from
> /usr/platform/SUNW,Ultra-4/lib/libc_psr.so.1
> #1  0xfeda08b0 in blalign () from
> /usr/platform/SUNW,Ultra-4/lib/libc_psr.so.1
> #2  0x26220 in basic_string<char, string_char_traits<char>,
> __default_alloc_template<false, 0> >::Rep::clone (this=0x5b4a0)
>     at
> /ldcg/lib/gcc-lib/sparc-sun-solaris2.7/2.95.2/../../../../include/g++-3/std/bastring.h:73
>
> #3  0xff1a75e8 in FrameCPP::SH::SH (this=0x898f8, in=@0xfe101c10)
>     at
> /ldcg/lib/gcc-lib/sparc-sun-solaris2.7/2.95.2/../../../../include/g++-3/std/bastring.h:75
>
> #4  0xff1a82b8 in FrameCPP::SH::read (in=@0xfe101c10)
>     at /home/aivanov/ldas/lib/framecpp/src/sh.cc:105
> #5  0xff17b500 in FrameCPP::Input::readStructureHeader (this=0xfe101c10)
>
>     at /home/aivanov/ldas/lib/framecpp/src/input.cc:148
> #6  0xff17ae1c in FrameCPP::Input::readNextObjectHeader
> (this=0xfe101c10)
>     at /home/aivanov/ldas/lib/framecpp/src/input.cc:84
> #7  0xff16e3f0 in FrameCPP::FrameReaderBase::readFrame (this=0xfe101c10)
>
>     at /home/aivanov/ldas/lib/framecpp/src/framereaderbase.cc:121
> #8  0x25d24 in read_test (a=0xfe101c10)
>     at /home/aivanov/ldas/lib/framecpp/tests/../src/framereader.hh:93
>
> SECOND THREAD:
> #0  0xff224b58 in vector<basic_string<char, string_char_traits<char>,
> __default_alloc_template<false, 0> >, allocator<basic_string<char,
> string_char_traits<char>, __default_alloc_template<false, 0> > >
> >::_M_insert_aux ()
>    from
> /usr1/local/aivanov/ldas/lib/framecpp/tests/../src/.libs/libframecpp.so.0
>
> #1  0xff17c614 in FrameCPP::Input::addError (this=0xfd909c10,
> msg=@0xfd9097f0)
>     at
> /ldcg/lib/gcc-lib/sparc-sun-solaris2.7/2.95.2/../../../../include/g++-3/stl_vector.h:325
>
> #2  0xff17bc10 in FrameCPP::Input::endDictionaryElement
> (this=0xfd909c10)
>     at /home/aivanov/ldas/lib/framecpp/src/input.cc:203
> #3  0xff17ae54 in FrameCPP::Input::readNextObjectHeader
> (this=0xfd909c10)
>     at /home/aivanov/ldas/lib/framecpp/src/input.cc:96
> #4  0xff16e3f0 in FrameCPP::FrameReaderBase::readFrame (this=0xfd909c10)
>
>     at /home/aivanov/ldas/lib/framecpp/src/framereaderbase.cc:121
> #5  0x25d24 in read_test (a=0xfd909c10)
>     at /home/aivanov/ldas/lib/framecpp/tests/../src/framereader.hh:93
>
> ---
> Thanks,
> Alex


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]