RFR: JDK-8174994: SA: clhsdb printmdo throws WrongTypeException when attached to a process with CDS
Jini George
jini.george at oracle.com
Wed Apr 18 06:05:18 UTC 2018
Thank you very much, Yasumasa, for pointing this out. You are right --
this would fail in the Linux systems if systemd-coredump is enabled.
I plan to file an enhancement request to address this issue (wrt
systemd-coredump) separately since this would apply to other coredump
generating test cases also like:
test/hotspot/jtreg/compiler/ciReplay/TestSAServer.java.
From what i can gather, i think we might be able to at least partially
address this by using
coredumptl -o <desired_core_path> dump <pid of the crashed process>
in the test cases, provided the kernel.core_pattern variable is not set
to "|/bin/false".
Let me know if you are not OK with this.
Thank you,
Jini.
On 4/14/2018 7:39 PM, Yasumasa Suenaga wrote:
> Hi Jini,
>
> ClhsdbCDSCore.java:
> Can this test work on modern Linux?
> AFAIK modern Linux contains systemd-coredump to gather core images.
> So I concern ClhsdbCDSCore.java fails in the future.
>
>
> Thanks,
>
> Yasumasa
>
>
> On 2018/04/12 13:21, Jini George wrote:
>> Ping: Gentle reminder !
>>
>> Thanks,
>> Jini.
>>
>> 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