RFR: JDK-8066859 java/lang/ref/OOMEInReferenceHandler.java failed with java.lang.Exception: Reference Handler thread died (original) (raw)

Peter Levart peter.levart at gmail.com
Wed May 6 17:13:15 UTC 2015


Hi,

I might have a closure for this long beard issue [1] and I'd like to propose a change [2].

It all started with [3] discussed here [4] which resulted in the fix for one source of OutOfMemoryError(s) terminating ReferenceHandler thread. With this fix, new test was added which started failing intermittently indicating there is another source of OutOfMemoryError(s) being thrown in ReferenceHandler. At that time, the investigation [6] indicated that the source is "r instanceof Cleaner" check and so another change was pushed [5]. The issue JDK-8022321 is internal - I don't have a link. That change was 2-fold: it added code to preload and pre-initialize Cleaner and InterruptedException classes in ReferenceHandler. and, cowardly, surrounded "r instanceof Cleaner" check with OOME exception handler. I'm pretty certain that pre-loading of the classes would have been enough. At least it would have not sprung the confusion expressed here [7]. But even that was not enough to prevent intermittent failures. I realized that the test I devised still fails because of Cleaner.clean() throwing OOME. Why this is possible is discussed in the issue [1]. I even modified the test to reproduce such failure with 100% chance.

So here I propose two things in [2] :

Regards, Peter

[1] https://bugs.openjdk.java.net/browse/JDK-8066859 [2] http://cr.openjdk.java.net/~plevart/jdk9-dev/OOMEInReferenceHandler/Investigation/webrev.04/ [3] https://bugs.openjdk.java.net/browse/JDK-8015434 [4] http://mail.openjdk.java.net/pipermail/core-libs-dev/2013-April/016510.html [5] http://hg.openjdk.java.net/jdk9/dev/jdk/rev/d04102f69d46 [6] https://www.mail-archive.com/core-libs-dev%40openjdk.java.net/msg23596.html [7] https://bugs.openjdk.java.net/browse/JDK-8055232



More information about the core-libs-dev mailing list