On Thu, 29 Aug 2024 17:06:19 GMT, Andrey Turbanov <[email protected]> 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