[Bug libstdc++/50703] New: std::stringstream not thread-safe

2011-10-12 Thread hoenle2...@kayser-threde.com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50703

 Bug #: 50703
   Summary: std::stringstream not thread-safe
Classification: Unclassified
   Product: gcc
   Version: 4.2.4
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: hoenle2...@kayser-threde.com


Our multi-threaded software (running on the SPARC compatible LEON3 processor
for space applications under the RTEMS 4.9.4 operating system) always locks up
at the same location outside the application software in libstdc++. See
attached debugger screenshot. The error arises between several minutes and
several hours of operation.

We were able to reproduce the problem with GCC/libstdc++ 4.2.4 and with 4.3.2.
We haven't tested newer versions.

The error apparently happens when the GNU library function __atomic_add() in
atomicity.cc is called very often, probably when being called from different
threads.
It could also be possibe that the error is not located in atomicity.cc but
already in its caller std::stringstream (in basic_ios.h).

We are pretty sure the application software can't do anything wrong at this
time as just the std::stringstream constructor is being called for an object on
the stack. See attached debugger screenshot.

We fixed the problem by replacing "std::stringstream" with our own class that
uses "printf" internally. Since then the application software never again
locked up.


[Bug libstdc++/50703] std::stringstream not thread-safe

2011-10-12 Thread hoenle2...@kayser-threde.com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50703

--- Comment #1 from hoenle2...@kayser-threde.com 2011-10-12 15:36:50 UTC ---
Created attachment 25475
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=25475
debugger screenshot


[Bug libstdc++/50703] std::stringstream not thread-safe

2011-10-13 Thread hoenle2...@kayser-threde.com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50703

--- Comment #3 from hoenle2...@kayser-threde.com 2011-10-13 07:56:47 UTC ---
I will try libstdc++ 4.6.x or 4.5.x. Question: May I use this new library with
the relatively old compiler I am currently utilizing or do I need to upgrade to
a newer compiler version also?


[Bug libstdc++/50703] std::stringstream not thread-safe

2011-10-17 Thread hoenle2...@kayser-threde.com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50703

--- Comment #7 from hoenle2...@kayser-threde.com 2011-10-17 08:17:21 UTC ---
@Jonathan: You ask "was gcc built with a non-default value for --enable-clocale
?". I don't think so. We perform cross development on Windows with MinGW as
supported out-of-the-box by the RTEMS operating system distribution. With that
distribution the cross compilation tools come already pre-compiled. Maybe the
following gcc output helps:

$ sparc-rtems-gcc -v
Reading specs from
c:/opt/rtems-4.8-mingw/bin/../lib/gcc/sparc-rtems/4.2.4/specs
Target: sparc-rtems
Configured with: ../gcc-4.2.4/configure --target=sparc-rtems --host
i686-mingw32 --build i486-slackware-linux --with-gnu-as --with-gnu-ld
--with-newlib --verbose --enable-threads --enable-languages=c,c++ --disable-nls
--prefix=/opt/rtems-4.8-mingw --enable-version-specific-runtime-libs
--with-system-zlib --disable-libstdcxx-pch --disable-win32-registry
--without-included-gettext
Thread model: rtems
gcc version 4.2.4

-

@Paolo: We never access a std::stringstream object from different threads but
always from a single thread. When we share objects between threads, we protect
them by a pthread mutex. I will perform a test with a new GCC/libstdc++
probably mid November. In case the problem persists I will try to set up a
short, self contained reproducer.

-

Regards
Alfred