Bug 45930 - AIX: c++ -static-libgcc cores on throw/catch
Summary: AIX: c++ -static-libgcc cores on throw/catch
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 4.5.1
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-10-07 08:44 UTC by Christian Volkmann
Modified: 2011-08-19 07:31 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments
Script with code to show the error. (433 bytes, application/x-shellscript)
2010-10-07 08:44 UTC, Christian Volkmann
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Christian Volkmann 2010-10-07 08:44:31 UTC
Created attachment 21986 [details]
Script with code to show the error.

A c++ program with -static-libgcc crashes on AIX (only) after throw.

> terminate called after throwing an instance of 'DoException'
> ./static-gcc-aix-no-catch.sh[52]: 226008 IOT/Abort trap(coredump)

It works fine without "-static-libgcc" on AIX. GNU/Linux x86 does
not have this problem.

A sample script is attached.

gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/freeware/libexec/gcc/powerpc-ibm-aix6.1.0.0/4.5.1/lto-wrapper
Target: powerpc-ibm-aix6.1.0.0
Configured with: ./configure --with-as=/usr/bin/as --with-ld=/usr/bin/ld --enable-languages=c,c++ --prefix=/opt/freeware --enable-threads --enable-version-specific-runtime-libs --disable-nls --enable-decimal-float=dpd --host=powerpc-ibm-aix6.1.0.0
Thread model: aix
gcc version 4.5.1 (GCC)
Comment 1 Christian Volkmann 2010-10-07 08:53:26 UTC
Stack trace with gdb 7.2: ( Compile option -O0 -g3 )

gdb static-gcc-aix-no-catch.static-libgcc 
GNU gdb (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "powerpc-ibm-aix6.1.0.0".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /tmp/static-gcc-aix-no-catch.static-libgcc...done.
(gdb) r
Starting program: /tmp/static-gcc-aix-no-catch.static-libgcc 
terminate called after throwing an instance of 'DoException'

Program received signal SIGABRT, Aborted.
0xd0136800 in raise () from /usr/lib/libc.a(shr.o)
(gdb) bt
#0  0xd0136800 in raise () from /usr/lib/libc.a(shr.o)
#1  0xd01a9028 in abort () from /usr/lib/libc.a(shr.o)
#2  0xd4508990 in __gnu_cxx::__verbose_terminate_handler () at  _start_ :93
#3  0xd451257c in __cxxabiv1::__terminate (handler=<error reading variable>) at  _start_ :39
#4  0xd45087e8 in std::terminate () at  _start_ :49
#5  0xd4512900 in __cxa_throw (obj=<error reading variable>, tinfo=<error reading variable>, dest=<error reading variable>) at  _start_ :83
#6  0x100006b4 in DoTest () at /tmp/static-gcc-aix-no-catch.cpp:10
#7  0x100006f4 in main () at /tmp/static-gcc-aix-no-catch.cpp:16
(gdb)
Comment 2 Christian Volkmann 2010-10-07 11:36:09 UTC
Same error with gcc-4.2.4:
g++ -v
Using built-in specs.
Target: powerpc-ibm-aix6.1.0.0
Configured with: ../gcc-4.2.4/configure --with-as=/usr/bin/as --with-ld=/usr/bin/ld --enable-languages=c,c++,fortran --prefix=/opt/freeware --enable-threads --enable-version-specific-runtime-libs --disable-nls --enable-decimal-float=dpd --host=powerpc-ibm-aix6.1.0.0
Thread model: aix
gcc version 4.2.4

( packages from http://www.perzl.org/aix/ Latest AIX6.1 )
Comment 3 Christian Volkmann 2011-07-20 07:51:57 UTC
The problem does not happen with gcc-4.5.3 and gcc 4.6.1 on AIX 7.1.
I exepct it's fixed in newer g++ versions.

Christian