Commit f51ab33b by Arnaud Charlet

s-tasren.adb (Exceptional_Complete_Rendezvous): Fix race condition.

2005-06-14  Arnaud Charlet  <charlet@adacore.com>

	* s-tasren.adb (Exceptional_Complete_Rendezvous): Fix race condition.

From-SVN: r101063
parent ab129900
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
-- -- -- --
-- GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS -- -- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
-- -- -- --
-- S Y S T E M . T A S K I N G . R E N D E Z V O U S -- -- S Y S T E M . T A S K I N G . R E N D E Z V O U S --
-- -- -- --
...@@ -559,6 +559,7 @@ package body System.Tasking.Rendezvous is ...@@ -559,6 +559,7 @@ package body System.Tasking.Rendezvous is
Entry_Call : Entry_Call_Link := Self_Id.Common.Call; Entry_Call : Entry_Call_Link := Self_Id.Common.Call;
Caller : Task_Id; Caller : Task_Id;
Called_PO : STPE.Protection_Entries_Access; Called_PO : STPE.Protection_Entries_Access;
Acceptor_Prev_Priority : Integer;
Exception_To_Raise : Ada.Exceptions.Exception_Id := Ex; Exception_To_Raise : Ada.Exceptions.Exception_Id := Ex;
Ceiling_Violation : Boolean; Ceiling_Violation : Boolean;
...@@ -720,15 +721,16 @@ package body System.Tasking.Rendezvous is ...@@ -720,15 +721,16 @@ package body System.Tasking.Rendezvous is
Self_Id.Common.Compiler_Data.Current_Excep); Self_Id.Common.Compiler_Data.Current_Excep);
end if; end if;
Acceptor_Prev_Priority := Entry_Call.Acceptor_Prev_Priority;
Initialization.Wakeup_Entry_Caller (Self_Id, Entry_Call, Done); Initialization.Wakeup_Entry_Caller (Self_Id, Entry_Call, Done);
STPO.Unlock (Caller); STPO.Unlock (Caller);
if Single_Lock then if Single_Lock then
Unlock_RTS; Unlock_RTS;
end if; end if;
Entry_Calls.Reset_Priority Entry_Calls.Reset_Priority (Self_Id, Acceptor_Prev_Priority);
(Self_Id, Entry_Call.Acceptor_Prev_Priority);
end if; end if;
end if; end if;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment