http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60078
--- Comment #6 from Bernd Edlinger <bernd.edlinger at hotmail dot de> --- Eric, could it be that the Finalize procedure is missing some sort of spin lock? ed@w-ed:~/gnu/gcc-build/gcc/testsuite/ada/acats/tests/c7/c761007$ cat c761007_0.adb -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- with TCTouch; package body C761007_0 is procedure Finalize( I : in out Internal ) is Previous_Side_Effect : Boolean := False; begin -- look to see if this character has been finalized yet for SEI in 1..Side_Effect_Finger loop Previous_Side_Effect := Previous_Side_Effect or Side_Effect(Side_Effect_Finger) = I.Effect; end loop; delay 0.01; -- <= additional delay here -- if not, then tack it on to the string, and touch the character if not Previous_Side_Effect then Side_Effect_Finger := Side_Effect_Finger +1; Side_Effect(Side_Effect_Finger) := I.Effect; TCTouch.Touch(I.Effect); end if; end Finalize; end C761007_0; ed@w-ed:~/gnu/gcc-build/gcc/testsuite/ada/acats/tests/c7/c761007$ ./c761007 ,.,. C761007 ACATS 2.5 14-02-06 10:05:45 ---- C761007 Check that if a finalize procedure invoked by a transfer of control or selection of a terminate alternative attempts to propagate an exception, the exception is ignored, but any other finalizations due to be performed are performed. * C761007 Asynchronously aborted operation Expecting: GHIJ Got: GHHIJ. **** C761007 FAILED ****************************.