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
problem!
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.
Thanks,
Jiangli
More information about the hotspot-runtime-dev
mailing list