Solaris throw bug, PR 5936

Jakob Østergaard jakob@unthought.net
Wed Apr 17 02:16:00 GMT 2002


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-exceptions
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 the bug 
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, causing 
either a segfault or a bus error, depending on configurations either in 
vec.cc or eh_throw.cc.

The method throwing the exception can be either in a shared library, or in the 
main executable (linked statically, but first incrementally linked into a 
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=0xfeb19fec, tinfo=0x15a038,
    dest=0xb194c <_ZN6errors16connectionclosedD1Ev>) at eh_throw.cc:63
63        header->unwindHeader.exception_class = __gxx_exception_class;

Compiler configuration:

$ g++ -v
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.4/specs
Configured with: ./configure --enable-languages=c,c++ --disable-threads 
--with-as=/usr/local/bin/as --with-gnu-as --with-ld=/usr/local/bin/ld 
--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 have 
some hundreds of thousands of lines of C++, two handfulls of processes all 
using this code, and *one* process exhibiting the problem.  The exact same 
code compiles and works with GCC-3.0.1, GCC-3.0.3 (and others) on various 
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 
of the 3.1 branch today.

Cheers,

 / jakob



More information about the Gcc-bugs mailing list