RFR: 8066859: java/lang/ref/OOMEInReferenceHandler.java failed with java.lang.Exception: Reference Handler thread died
Doug Lea
dl at openjdk.org
Mon Jul 11 15:02:11 UTC 2022
On Mon, 11 Jul 2022 04:10:49 GMT, David Holmes <dholmes at openjdk.org> wrote:
>> 8066859 : java/lang/ref/OOMEInReferenceHandler.java failed with java.lang.Exception: Reference Handler thread died
>
> src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java line 296:
>
>> 294: byte spins = 0, postSpins = 0; // retries upon unpark of first thread
>> 295: boolean interrupted = false, first = false;
>> 296: Node pred = null, t; // predecessor of node when enqueued
>
> Nit: please don't use this style of multi-variable declaration as they are very easy to mis-read. Also the comment only applies to one of the variables.
OK, changed.
> src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedSynchronizer.java line 1626:
>
>> 1624: }
>> 1625: if (!isHeldExclusively() || !release(savedState = getState()))
>> 1626: throw LockSupport.staticIllegalMonitorStateException; // OOM
>
> How is it possible to get IMSE this deep into the code? And the comment is confusing - OOM?
Clarified to:
// fall through if encountered OutOfMemoryError
if (!isHeldExclusively() || !release(savedState = getState()))
throw LockSupport.staticIllegalMonitorStateException;
-------------
PR: https://git.openjdk.org/jdk/pull/9427
More information about the core-libs-dev
mailing list