On my continuous tester I noticed that with trunk ac3207a sometimes hangs. Using a slightly modified testcase and a shell loop I managed to reproduce it after one hour of looping (140k loop exec), please find below the gdb backtrace.
$ gcc -v gcc version 4.4.0 20081029 (experimental) [trunk revision 141434] (GCC) $ gnatmake -O2 ac3207a $ while true; do date;./ac3207a; done >& log.txt $ gdb -p PID (gdb) info thread 1 Thread 46912500751824 (LWP 25669) 0x00002aaaaabcbb3a in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 (gdb) bt #0 0x00002aaaaabcbb3a in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #1 0x000000000040a953 in system.tasking.stages.vulnerable_complete_master () at s-tassta.adb:1620 #2 0x00000000004031f0 in ac3207a___clean.3268 () #3 0x000000000040356c in _ada_ac3207a () $ cat ac3207a.adb -- BEGIN SOURCE with Ada.Text_Io;use Ada.Text_Io; PROCEDURE AC3207A IS GENERIC TYPE PRIV IS LIMITED PRIVATE; PACKAGE GEN_P IS TASK T1 IS ENTRY E; END T1; END GEN_P; TASK TYPE TASK_T IS END TASK_T; TYPE REC IS RECORD OBJ : TASK_T; END RECORD; PACKAGE BODY GEN_P IS TASK BODY T1 IS BEGIN DECLARE OBJ : PRIV; BEGIN SELECT ACCEPT E; OR TERMINATE; END SELECT; END; END T1; END GEN_P; TASK BODY TASK_T IS BEGIN NULL; END; PACKAGE P IS NEW GEN_P(TASK_T); PACKAGE NEW_P IS NEW GEN_P(REC); BEGIN P.T1.E; NEW_P.T1.E; Put_Line("ok"); END AC3207A; -- END SOURCE -- Summary: ACATS ac3207a sometimes hangs in system.tasking.stages.vulnerable_complete_master Product: gcc Version: 4.4.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: ada AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: laurent at guerby dot net GCC host triplet: x86_64-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37956