[Bug ada/24019] New: Run-time error not detected, deallocating busy protected object, RM 9.4(20)

ludovic at ludovic-brenta dot org gcc-bugzilla@gcc.gnu.org
Thu Sep 22 19:25:00 GMT 2005


(Debian bug #329691)

In the following program, the environment task deallocates a protected
object while a task is busy in it.  Per RM 9.4(20), the task should
receive a Program_Error.  In gnat 3.15p-13, gnat-3.4 3.4.3-13 and
gnat-4.0 4.0.1-2, the program teminates immediately but without an
exception (no output).

$ gnatmake test_329691
$ ./test_329691
$ 
(no output, exception message expected)

with Ada.Exceptions;
with Ada.Text_IO;
with Ada.Unchecked_Deallocation;
procedure Test_329691 is
   protected type P is
      procedure E;
   end P;

   protected body P is
      procedure E is
         G : Integer;
      begin
         for K in 1 .. 10 ** 8 loop
            G := K - 1 + K * (1 - K);
         end loop;
      end E;
   end P;

   task type T (Prot : access P);

   task body T is
   begin
      Prot.E;
   exception
      when E : others =>
         Ada.Text_IO.Put_Line (Ada.Exceptions.Exception_Information (E));
   end T;

   type Access_T is access T;
   New_T : Access_T;
   type Access_P is access P;
   procedure Free is new Ada.Unchecked_Deallocation (Object => P,
                                                     Name => Access_P);
   New_P : Access_P := new P;
begin
   New_T := new T (New_P);
   Free (New_P);
exception
   when E : others =>
      Ada.Text_IO.Put_Line (Ada.Exceptions.Exception_Information (E));
end Test_329691;

-- 
           Summary: Run-time error not detected, deallocating busy protected
                    object, RM 9.4(20)
           Product: gcc
           Version: 3.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: ada
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: ludovic at ludovic-brenta dot org
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i486-linux-gnu
  GCC host triplet: i486-linux-gnu
GCC target triplet: i486-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24019



More information about the Gcc-bugs mailing list