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

Reply via email to