"then abort" not aborting

Hi, could you tell me if this is a bug from gnat ?
The following should be aborting the call to T2’s entry, and indeed “Starting T2.E” doesn’t display. However the program does not end, and “Finished abortable” doesn’t display. It sort of hangs on to the call without advancing ?

with ada.text_io;use ada.text_io;
procedure Main is
	task T1 is
		entry E;
	end T1;
	task body T1 is
	begin
		delay 0.2;
		accept E do
			Put_Line("Starting T1.E");
			Put_Line("Finishing T1.E");
		end E;
	end T1;
	task T2 is
		entry E;
	end T2;
	task body T2 is
	begin
		delay 0.4;
		accept E do
			Put_Line("Starting T2.E");
			delay 0.1;
			Put_Line("Finishing T2.E");
		end E;
	end T2;
begin
	select
		T1.E;
		Put_Line("Finished triggering");
	then abort
		T2.E;
		Put_Line("Finished abortable");
	end select;
end Main;

The abortable part

T2.E;
Put_Line("Finished abortable");

is aborted when sitting at the entry call E before printing Finished abortable. Then the environmental task (Main) enters finalization. This requires awaiting for T1 and T2 to terminate. T1 terminates, T2 does not, because it waits for a call to the entry E which never happens.

In order to fix the code add a terminate alternative:

task body T2 is
begin
   delay 0.4;
   select
      accept E do
         Put_Line("Starting T2.E");
         delay 0.1;
         Put_Line("Finishing T2.E");
      end E;
   or terminate; -- Accept exiting request
   end select;
end T2;