RFR: JDK-8209389: SIGSEGV in WalkOopAndArchiveClosure::do_oop_work

Jiangli Zhou jiangli.zhou at oracle.com
Wed Aug 15 00:50:18 UTC 2018

Please review the following fix that addresses the issue for 
JDK-8209389. A Java object that's larger than one GC region cannot be 
archived as we currently don't support object spanning more than one 
archive heap region. The archiving code needs to check the 
MetaspaceShared::archive_heap_object return value and handle failure 
accordingly. Thanks Claes for finding the edge case and reporting the 

   webrev: http://cr.openjdk.java.net/~jiangli/8209389/webrev.00

   bug: https://bugs.openjdk.java.net/browse/JDK-8209389

- java_lang_Class::archive_basic_type_mirrors
   Archived object returned by MetaspaceShared::archive_heap_object 
should not be NULL in these cases (basic type mirrors are not 
humongous). Added an assert.

- HeapShared::archive_reachable_objects_from_static_field
   If the sub-graph entry object is too large, archiving is skipped for 
it’s referenced sub-graph and dumping process continues.

- WalkOopAndArchiveClosure::do_oop_work
   Abort dumping when archiving failures due to extra-large object 
encountered during the sub-graph archiving.

Tested with the new test case included in the webrev. Tier1 - tier4 
testing are in progress.


More information about the hotspot-runtime-dev mailing list