RFR: JDK-8174994: SA: clhsdb printmdo throws WrongTypeException when attached to a process with CDS
    Jini George 
    jini.george at oracle.com
       
    Fri Apr  6 16:21:50 UTC 2018
    
    
  
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 serviceability-dev
mailing list