On Thu, 29 Aug 2024 17:06:19 GMT, Andrey Turbanov <aturba...@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. > > test/jdk/sun/java2d/Disposer/TestDisposerRace.java line 117: > >> 115: MyDisposerRecord disposerRecord = >> retryOnOOME(MyDisposerRecord::new); >> 116: >> 117: while(count > 0) { > > nit > Suggestion: > > while (count > 0) { :( ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/20602#discussion_r1742022578