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. ------------- Commit messages: - Harden reacquisition of AQS and AQLS Conditions Changes: https://git.openjdk.org/jdk/pull/20602/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=20602&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8325397 Stats: 129 lines in 3 files changed: 106 ins; 3 del; 20 mod Patch: https://git.openjdk.org/jdk/pull/20602.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/20602/head:pull/20602 PR: https://git.openjdk.org/jdk/pull/20602