読者です 読者をやめる 読者になる 読者になる

jinfoやjmapで例外InvocationTargetException情報が取れない

他の調査中に発見解決した問題ですが、備忘メモ。

環境

CentOS Linux release 7.2.1511
openjdk version "1.8.0_77"

事象

jpsで見つけたプロセスにjstatした所は問題無く表示されるのですが、

# jps
4470 Jps
3159 start.jar
# jstat -gc 3159
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
26176.0 26176.0 25332.3  0.0   209792.0 209792.0  262144.0   262144.0  36060.0 35394.7 4376.0 4181.5    265    4.026 6581  6400.726 6404.752

jinfoやjmapでプロセスを確認すると「java.lang.reflect.InvocationTargetException」が発生して情報が取れません。

# jinfo 3159
Attaching to process ID 3159, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.77-b03
Java System Properties:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.tools.jinfo.JInfo.runTool(JInfo.java:108)
    at sun.tools.jinfo.JInfo.main(JInfo.java:76)
Caused by: java.lang.InternalError: Metadata does not appear to be polymorphic
    at sun.jvm.hotspot.types.basic.BasicTypeDataBase.findDynamicTypeForAddress(BasicTypeDataBase.java:278)
    at sun.jvm.hotspot.runtime.VirtualBaseConstructor.instantiateWrapperFor(VirtualBaseConstructor.java:102)
    at sun.jvm.hotspot.oops.Metadata.instantiateWrapperFor(Metadata.java:68)
    at sun.jvm.hotspot.memory.SystemDictionary.getSystemKlass(SystemDictionary.java:127)
    at sun.jvm.hotspot.runtime.VM.readSystemProperties(VM.java:879)
    at sun.jvm.hotspot.runtime.VM.getSystemProperties(VM.java:873)
    at sun.jvm.hotspot.tools.SysPropsDumper.run(SysPropsDumper.java:44)
    at sun.jvm.hotspot.tools.JInfo$1.run(JInfo.java:79)
    at sun.jvm.hotspot.tools.JInfo.run(JInfo.java:94)
    at sun.jvm.hotspot.tools.Tool.startInternal(Tool.java:260)
    at sun.jvm.hotspot.tools.Tool.start(Tool.java:223)
    at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
    at sun.jvm.hotspot.tools.JInfo.main(JInfo.java:138)
    ... 6 more

解決策

Debuginfoパッケージをインストールしたら解決しました。

debuginfo-install java-1.8.0-openjdk-devel

debuginfo-installがインストールされていない場合は以下の通りインストールします。

yum install yum-utils

参考情報

5.2. Debuginfo パッケージのインストール