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