RFR: 8264337: VM crashed when -XX:+VerifySharedSpaces

Yi Yang yyang at openjdk.java.net
Mon Mar 29 15:33:45 UTC 2021


`java -XX:+VerifySharedSpaces -version` reports an internal error that would crash VM:

[0.113s][error][cds] relocation bitmap CRC error
[0.114s][error][cds] relocation bitmap CRC error
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc: SuppressErrorAt=/javaClasses.inline.hpp:215
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/home/qingfeng.yy/openjdk16_so_warning/jdk/src/hotspot/share/classfile/javaClasses.inline.hpp:215), pid=75241, tid=75242
# assert(java_lang_Class::is_instance(java_class)) failed: must be a Class object
#
# JRE version: (17.0) (slowdebug build )
# Java VM: OpenJDK 64-Bit Server VM (slowdebug 17-internal+0-adhoc.qingfengyy.jdk, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0x697d19] java_lang_Class::as_Klass(oopDesc*)+0x29
#
# No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home/qingfeng.yy/openjdk16_so_warning/jdk/build/linux-x86_64-server-slowdebug/images/jdk/bin/hs_err_pid75241.log
#
#
The gut of this problem is that the calculation of crc32 for the CDS archive is inconsistent between dumptime and runtime, this will cause subsequent steps to deviate from the desired path one after another, eventually leading to an internal error that crashes the VM. 

All tests under hotspot/jtreg/runtime/cds are passed(excepts those problem-listed) with slowdebug mode.

-------------

Commit messages:
 - fix verify crash

Changes: https://git.openjdk.java.net/jdk/pull/3244/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=3244&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8264337
  Stats: 44 lines in 2 files changed: 43 ins; 0 del; 1 mod
  Patch: https://git.openjdk.java.net/jdk/pull/3244.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/3244/head:pull/3244

PR: https://git.openjdk.java.net/jdk/pull/3244


More information about the hotspot-runtime-dev mailing list