Hi Daniil,

On 11/05/2019 12:10 pm, Daniil Titov wrote:
Please review the change that fixes an intermittent failure of the test.

The tests checks the implementation of  the 
com.sun.tools.jdi.ClassLoaderReference class. The problem here is that while 
com.sun.tools.jdi.ClassLoaderReferenceImpl.definedClasses() iterates over all 
loaded classes to retrieve a classloader and compares it to the current one, 
some of the classes might become unloaded and garbage collected (e.g. 
org.graalvm.compiler.nodes.InliningLog$$Lambda$41.899832640 or 
jdk.internal.reflect.GeneratedConstructorAccessor1, etc.). If this happens then 
the attempt to retrieve a classloader for the collected class results in 
com.sun.jdi.ObjectCollectedException being thrown.

That seems odd to me. If you have a reference to the Class then it can't be unloaded. I would not expect allClasses() to have weak-references, so a class should not be unloadable while you are examining it. Unless it is finding VM anonymous classes (which it should not!).

David
-----

The fix catches this com.sun.jdi.ObjectCollectedException and continues 
iterating over the rest of the classes.

Webrev: http://cr.openjdk.java.net/~dtitov/8222422/webrev.01
Bug: https://bugs.openjdk.java.net/browse/JDK-8222422

Thanks!
--Daniil


Reply via email to