RFR: 8016341 java/lang/ref/OOMEInReferenceHandler.java failing intermittently

Peter Levart peter.levart at gmail.com
Tue Jul 2 07:19:33 UTC 2013

Hi David,

Looking at original code once again, I think this was actually a bug. 
The WeakReference instance constructed in (old) line 82, can be GCed 
right away, since nobody is using the local variable after assignment. I 
f WeakReference is GCed it can not be enqueued. The promotion of local 
variable into a field is one way to fix this. The other would be to use 
the local variable somewhere down the code path, like for example in a 
final throw statement:

  110          throw new IllegalStateException("Reference Handler thread stuck. weakRef.get(): " + weakRef.get());

This would also reveal some more info about the WeakReference when 
there's no sure answer after 10 seconds and could be added to the test 

Regards, Peter

On 07/02/2013 06:38 AM, David Holmes wrote:
> This recently added test was found to fail under some conditions - 
> namely client compiler with -Xcomp. It seems that the use of all local 
> variables enabled the compiler to optimize things in a way that 
> stopped the weakref from being enqueued as expected. Simple fix was to 
> make the weakref a field.
> http://cr.openjdk.java.net/~dholmes/8016341/webrev/
> Thanks,
> David

More information about the core-libs-dev mailing list