RFR(S): 8200466: Revisit the setting of _transitive_interfaces in InstanceKlass

Calvin Cheung calvin.cheung at oracle.com
Fri Apr 27 04:46:31 UTC 2018


JBS: https://bugs.openjdk.java.net/browse/JDK-8200466

webrev: http://cr.openjdk.java.net/~ccheung/8200466/webrev.00/

This bug was discovered during the investigation of JDK-8200078 
<https://bugs.openjdk.java.net/browse/JDK-8200078>.

I've included the following comment in classFileParser.cpp to summarize 
the change:

// Delay the setting of _transitive_interfaces until after 
initialize_supers() in
// fill_instance_klass(). It is because the _transitive_interfaces may 
be shared with
// its _super. If an OOM occurs while loading the current klass, its 
_super field
// may not have been set. When GC tries to free the klass, the 
_transitive_interfaces
// may be deallocated mistakenly in 
InstanceKlass::deallocate_interfaces(). Subsequent
// dereferences to the deallocated _transitive_interfaces will result in 
a crash.

Testing: (on Oracle platforms)
     hs-tier{1,2,3}
     closed (soon will be open) PCL (parallel class loading) tests

thanks,
Calvin


More information about the hotspot-runtime-dev mailing list