diff -r 5ac19bd3a1e2 src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/FileMapInfo.java --- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/FileMapInfo.java Thu Mar 26 10:14:52 2020 -0700 +++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/FileMapInfo.java Fri Apr 10 17:36:40 2020 -0700 @@ -149,6 +149,9 @@ } public boolean inCopiedVtableSpace(Address vptrAddress) { + if (vptrAddress == null) { + return false; + } if (vptrAddress.greaterThan(mcRegionBaseAddress) && vptrAddress.lessThanOrEqual(mcRegionEndAddress)) { return true; diff -r 5ac19bd3a1e2 src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Metadata.java --- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Metadata.java Thu Mar 26 10:14:52 2020 -0700 +++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Metadata.java Fri Apr 10 17:36:40 2020 -0700 @@ -71,6 +71,7 @@ } public static Metadata instantiateWrapperFor(Address addr) { + System.err.println("instantiateWrapperFor:" + addr); return metadataConstructor.instantiateWrapperFor(addr); } diff -r 5ac19bd3a1e2 src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Oop.java --- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Oop.java Thu Mar 26 10:14:52 2020 -0700 +++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Oop.java Fri Apr 10 17:36:40 2020 -0700 @@ -190,13 +190,13 @@ } public void printRawOn(PrintStream tty) { - tty.print("Dumping raw memory for "); - printValueOn(tty); - tty.println(); + //tty.print("Dumping raw memory for "); + //printValueOn(tty); + //tty.println(); long size = getObjectSize() * 4; - for (long i = 0; i < size; i += 4) { - long memVal = getHandle().getCIntegerAt(i, 4, true); - tty.println(Long.toHexString(memVal)); + for (long i = 0; i < size; i += 8) { + long memVal = getHandle().getCIntegerAt(i, 8, true); + tty.format("@%3d: 0x%16x\n", i, memVal); } } diff -r 5ac19bd3a1e2 src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/types/basic/BasicTypeDataBase.java --- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/types/basic/BasicTypeDataBase.java Thu Mar 26 10:14:52 2020 -0700 +++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/types/basic/BasicTypeDataBase.java Fri Apr 10 17:36:40 2020 -0700 @@ -296,6 +296,10 @@ Address loc1 = addr.getAddressAt(0); + if (loc1 == null) { + System.err.println(addr.getClass() + "/" + Long.toHexString(addr.asLongValue()) + "/" + addr); + } + if (VM.getVM().isSharingEnabled()) { // Check if the value falls in the _md_region FileMapInfo cdsFileMapInfo = VM.getVM().getFileMapInfo(); diff -r 5ac19bd3a1e2 src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java --- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java Thu Mar 26 10:14:52 2020 -0700 +++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java Fri Apr 10 17:36:40 2020 -0700 @@ -610,6 +610,8 @@ } protected void writeClass(Instance instance) throws IOException { + System.err.println("writeClass: " + instance); + instance.printRawOn(System.err); Klass reflectedKlass = java_lang_Class.asKlass(instance); // dump instance record only for primitive type Class objects. // all other Class objects are covered by writeClassDumpRecords.