On Thu, 15 Aug 2024 18:22:54 GMT, Viktor Klang <vkl...@openjdk.org> wrote:

> My suspicion is that Condition::await() throws before having successfully 
> reacquired the lock, and this exception is swallowed because Lock::unlock() 
> then throws when invoke with an IllegalMonitorStateException as the current 
> thread was not reestablished as the owner.
> 
> So this PR is intended to harden the reacquisition of await-ing methods in 
> AQS and AQLS so that instead of throwing they spin-loop trying to reacquire 
> the lock—at least a thread dump would show where the Thread is stuck trying 
> to reacquire.
> 
> There's also the option of attempting to log a JFR event on the first 
> reacquisition failure, but that might need to be done with a pre-created 
> event as the cause of the failing acquisition may be an OOME.
> 
> I also needed to harden the TestDisposerRace itself, as it currently tries to 
> provoke OOMEs but then proceeds to want to allocate objects used for the test 
> itself. I'm not super-happy about the changes there, but they should be safer 
> than before.
> 
> The first RuntimeException/Error encountered will be rethrown upon success to 
> facilitate debugging.

This pull request has now been integrated.

Changeset: e0c46d58
Author:    Viktor Klang <vkl...@openjdk.org>
URL:       
https://git.openjdk.org/jdk/commit/e0c46d589b12aa644e12e4a4c9e84e035f7cf98d
Stats:     129 lines in 3 files changed: 106 ins; 3 del; 20 mod

8325397: sun/java2d/Disposer/TestDisposerRace.java fails in linux-aarch64

Reviewed-by: alanb

-------------

PR: https://git.openjdk.org/jdk/pull/20602

Reply via email to