RFR: JDK-8174994: SA: clhsdb printmdo throws WrongTypeException when attached to a process with CDS

Jini George jini.george at oracle.com
Thu Apr 12 04:21:54 UTC 2018

Ping: Gentle reminder !


On 4/6/2018 9:51 PM, Jini George wrote:
> Hello!
> Requesting reviews for: https://bugs.openjdk.java.net/browse/JDK-8174994
> Webrev: http://cr.openjdk.java.net/~jgeorge/8174994/webrev.00/
> While trying to identify the type given an address, a WrongTypeException 
> was getting thrown with various clhsdb commands (like printmdo, jstack, 
> etc). This was since SA tries to map an address to a hotspot C++ type by 
> comparing the vtable address to the vtable address values of known 
> types. With CDS, since the vtables are copied over for the Metadata 
> classes, the vtable addresses themselves don't match (though, of course, 
> the contents will), and SA errors out.
> The fix has been implemented by making changes to read in the md region 
> (consisting of the c++ vtables) of the CDS archive in SA, and mapping 
> the vtable addresses to the corresponding metadata type (ConstantPool, 
> InstanceKlass, InstanceClassLoaderKlass, InstanceMirrorKlass, 
> InstanceRefKlass, Method, ObjArrayKlass, TypeArrayKlass).
> For corefiles, an additional modification has been done to have the 
> replicated FileMapHeader structure (from 
> src/hotspot/share/memory/filemap.hpp, which is replicated in SA in 
> ps_core.c), to be in sync with the corresponding definition in 
> src/hotspot/share/memory/filemap.hpp.
> Test cases to test both live and corefile debugging are being added with 
> this. These and other SA tests pass on Mach5.
> Thanks,
> Jini.

More information about the hotspot-runtime-dev mailing list