http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61027
Bug ID: 61027
Summary: gnatcmd gets SIGABRT during exception handling
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: ada
Assignee: unassigned at gcc dot gnu.org
Reporter: simon at pushface dot org
Mac OS X 10.9.2 (darwin13.1.0), Xcode 5.1.1
The tool gnat (built as gnatcmd), as built in GCC, fails with SIGABRT while
unwinding an exception. None of the other tools show this behaviour (I suppose
they may not raise exceptions?), and gnatcmd is perhaps unusual in that it
raises an exception as part of its normal exit.
I rebuilt gnatcmd with the newly-built compiler, and the problem went away
(gnatcmd executed successfully).
This is a GDB session showing the problem.
(gdb) catch exception
Catchpoint 1: all Ada exceptions
(gdb) run list system.ads
Starting program: /Users/simon/tmp/gnatcmd/gnat list system.ads
Catchpoint 1, VMS_CONV.NORMAL_EXIT at 0x00000001000d0a8a in _ada_gnatcmd ()
at /Users/simon/tmp/gcc-4.9.0/gcc/ada/gnatcmd.adb:2713
2713 raise Normal_Exit;
(gdb) n
44 end Debug_Raise_Exception;
(gdb) n
ada__exceptions__complete_occurrence (x=0x100a08710) at a-except.adb:943
943 end Complete_Occurrence;
(gdb) n
ada__exceptions__complete_and_propagate_occurrence (x=0x100a08710)
at a-except.adb:952
952 Exception_Propagation.Propagate_Exception (X);
(gdb) s
ada__exceptions__exception_propagation__propagate_exceptionXn (
excep=0x100a08710) at a-exexpr.adb:351
351 procedure Propagate_Exception (Excep : EOA) is
(gdb) s
353 Propagate_GCC_Exception (To_GCC_Exception
(Excep.Machine_Occurrence));
(gdb) s
ada__exceptions__exception_propagation__propagate_gcc_exceptionXn (
gcc_exception=0x100a086d0) at a-exexpr.adb:311
311 procedure Propagate_GCC_Exception
(gdb) s
321 Unwind_RaiseException (GCC_Exception);
(gdb) s
__gnat_Unwind_RaiseException (e=0x100a086d0) at raise-gcc.c:1377
1377 return _Unwind_RaiseException (e);
(gdb) s
_Unwind_RaiseException (exc=0x100a086d0)
at ../../../gcc-4.9.0/libgcc/unwind.inc:83
83 {
(gdb) n
88 uw_init_context (&this_context);
(gdb) n
83 {
(gdb) n
88 uw_init_context (&this_context);
(gdb) n
83 {
(gdb) n
88 uw_init_context (&this_context);
(gdb) n
83 {
(gdb) n
89 cur_context = this_context;
(gdb) n
83 {
(gdb) n
88 uw_init_context (&this_context);
(gdb) n
Program received signal SIGABRT, Aborted.
0x00007fff904ab866 in ?? ()