RFR (S): JDK-8152949: Jigsaw crash when Klass in _fixup_module_field_list is unloaded

Lois Foltan lois.foltan at oracle.com
Thu Apr 14 19:29:47 UTC 2016


Hello,

Please review the following fix:

Webrev:
       http://cr.openjdk.java.net/~lfoltan/bug_jdk8152949/

Bug: Jigsaw crash when Klass in _fixup_module_field_list is unloaded
       https://bugs.openjdk.java.net/browse/JDK-8152949

Summary:
Prior to java.base being defined to the VM by the module system 
initialization, classes loaded must be saved on a fixup list in order to 
later have their java.lang.Class' module field patched with java.base's 
java.lang.reflect.Module object once java.base is defined.  Before 
module system initialization is complete, all classes loaded must have 
java.base as their defining module and be loaded by the boot loader.   
It was erroneously assumed that all classes placed on the module fixup 
list therefore would not die before java.base was defined.  This 
assumption did not hold for anonymous classes which have a shorter 
lifetime than the boot loader.  Test cases run with a small heap, 
-Xmx2m, would cause GC to unload the anonymous classes on the fixup 
list, later causing issues when an attempt was made to patch these 
classes with java.base's java.lang.reflect.Module object.  Thank you to 
Per Liden and Stefan Karlsson for contributing this fix for the runtime 
team.

Test:
- java/lang, java/util, java/io, all Hotspot jtreg tests, Hotspot 
colocated tests & noncolo.quick.testlist
- several iterations of ConcurrentLinkedQueue/RemoveLeak.java which 
exhibited the problem


More information about the hotspot-dev mailing list