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
anyway.
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