libstdc++/5396: ifstream read()'s data multiple times on Solaris

Craig Rodrigues rodrigc@attbi.com
Sat Apr 20 05:56:00 GMT 2002


The following reply was made to PR libstdc++/5396; it has been noted by GNATS.

From: Craig Rodrigues <rodrigc@attbi.com>
To: jakub@unthought.net, gcc-gnats@gcc.gnu.org, gcc-prs@gcc.gnu.org,
   anderson@ligo.caltech.edu, gcc-bugs@gcc.gnu.org, nobody@gcc.gnu.org
Cc:  
Subject: Re: libstdc++/5396: ifstream read()'s data multiple times on Solaris
Date: Sat, 20 Apr 2002 08:48:52 -0400

 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=5396
 
 Submitted by jakub@unthought.net:
 
 
  Hello all,
  
  I am seeing an error possibly related to PR 5936:
  
  Following configurations are affected:
  GCC-3.0.2 with vendor linker and assembler, with sjlj-exceptions.
  GCC-3.0.4 with vendor linker and assembler, with and without sjlj-excepti=
  ons
  GCC-3.0.4 with GNU binutils 2.12, without sjlj-exceptions.
  
  I have not yet found a working configuration (one that does not expose th=
  e bug=20
  that I see - any configuration not listed above, is simply not yet tested=
  )
  
  My problem:  A non-virtual method in a base class throws an exception, ca=
  using=20
  either a segfault or a bus error, depending on configurations either in=20
  vec.cc or eh_throw.cc.
  
  The method throwing the exception can be either in a shared library, or i=
  n the=20
  main executable (linked statically, but first incrementally linked into a=
  =20
  library prior to linking into the executable). This makes no difference.
  
  With GCC-3.0.4 and GNU binutils 2.12, I get:
  
  #0  0xff24fca0 in __cxa_throw (obj=3D0xfeb19fec, tinfo=3D0x15a038,
      dest=3D0xb194c <_ZN6errors16connectionclosedD1Ev>) at eh_throw.cc:63
  63        header->unwindHeader.exception_class =3D __gxx_exception_class;
  
  Compiler configuration:
  
  $ g++ -v
  Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.4/spec=
  s
  Configured with: ./configure --enable-languages=3Dc,c++ --disable-threads=
  =20
  --with-as=3D/usr/local/bin/as --with-gnu-as --with-ld=3D/usr/local/bin/ld=
  =20
  --with-gnu-ld
  Thread model: single
  gcc version 3.0.4
  
  I tried writing a small test program, but weren't successful in that. I h=
  ave=20
  some hundreds of thousands of lines of C++, two handfulls of processes al=
  l=20
  using this code, and *one* process exhibiting the problem.  The exact sam=
  e=20
  code compiles and works with GCC-3.0.1, GCC-3.0.3 (and others) on various=
  =20
  Intel based systems (RedHat Linux, Debian GNU/Linux, FreeBSD).
  
  Oh, and my system is:
  $ uname -a
  SunOS sol 5.8 Generic_108528-05 sun4u sparc SUNW,Ultra-1
  
  Any ideas ?   Need more info ? Anything I can try/test ?  I will try the =
  head=20
  of the 3.1 branch today.
  
  Cheers,
  
   / jakob
  
 
 



More information about the Gcc-prs mailing list