This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
C++ STL code not reentrant
- To: gcc-bugs at gcc dot gnu dot org
- Subject: C++ STL code not reentrant
- From: Alex Ivanov <alex dot ivanov at writeme dot com>
- Date: Mon, 01 May 2000 11:59:33 -0700
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