Javadump(更常见的名字:javacore) -- 2

主题

Javadump(更常见的名字:javacore) – 2

TITLE、GPINFO 和 ENVINFO 部分

在 Javadump 的开始处,前三部分为 TITLE、GPINFO 和 ENVINFO 部分。它们提供了有关转储原因的有用信息。

以下示例显示了取自简单的 Java™ 测试程序的部分输出,该程序调用(使用 JNI)外部函数导致了“常规保护故障”(GPF)。

  • TITLE

    显示有关导致 Javadump 生成的事件、获取时间及其名称的基本信息。

0SECTION       TITLE subcomponent dump routine 
NULL ===============================
1TICHARSET ISO8859-1
1TISIGINFO Dump Event "gpf" (00002000) received 1TIDATETIME Date: 2011/11/10 at 16:48:06
1TIFILENAME Javacore filename: /home/test/javacore.20111110.164801.5308428.0002.txt
1TIREQFLAGS Request Flags: 0x81 (exclusive+preempt)
1TIPREPSTATE Prep State: 0x100 (trace_disabled)
1TIPREPINFO Exclusive VM access not taken: data may not be consistent across javacore sections
  • GPINFO

    内容会有所不同,这取决于是否由于 GPF 而生成 Javadump。它显示了有关操作系统的常规信息。如果故障由 GPF 所致,会提供关于故障的 GPF 信息,在这种情况下,会显示从 MVSCR71D.dll 中抛出的保护异常。 同时也显示特定于处理器的寄存器和体系结构。

0SECTION       GPINFO subcomponent dump routine 
NULL ================================
2XHOSLEVEL OS Level : AIX 7.1 2XHCPUS Processors -
3XHCPUARCH Architecture : ppc64
3XHNUMCPUS How Many : 8
3XHNUMASUP NUMA is either not supported or has been disabled by user NULL
1XHEXCPCODE J9Generic_Signal_Number: 00000004
1XHEXCPCODE Signal_Number: 0000000B
1XHEXCPCODE Error_Value: 00000000
1XHEXCPCODE Signal_Code: 00000033
1XHEXCPCODE Handler1: 09001000A0377470
1XHEXCPCODE Handler2: 09001000A036DA50
NULL
1XHEXCPMODULE Module: ./libgpf.a
1XHEXCPMODULE Module_base_address: 0900000000431100
NULL
1XHREGISTERS Registers:
2XHREGISTER R0: 0900000000431360
2XHREGISTER R1: 0000010010112910
2XHREGISTER R2: 09001000A042B468
2XHREGISTER R3: 0000000000000000
2XHREGISTER R4: 0000000000000000
2XHREGISTER R5: 0000010010112B00
2XHREGISTER R6: 09001000A091C0A8
2XHREGISTER R7: 0000000000000001
2XHREGISTER R8: 09001000A037ACE0 ....
2XHREGISTER FPR0: FFF8000000000008
2XHREGISTER FPR1: 4020800000000000
2XHREGISTER FPR2: 0000000000000000
2XHREGISTER FPR3: C530000000000000
2XHREGISTER FPR4: 4148000000000000
2XHREGISTER FPR5: 401C000000000000
2XHREGISTER FPR6: 401C000000000000
2XHREGISTER FPR7: 0000000000000000
2XHREGISTER FPR8: 0000000000000000 ....
1XHFLAGS VM flags:0000000000040000

GPINFO 部分还引用了 vmState,在控制台输出中记录为 VM flags。 vmState 是发生崩溃时 JVM 中出现的特定线程状态。vmState 的值是十六进制数,以 MSSSS 结尾,其中 M 是 SDK 组件,SSSS 是特定于组件的代码。SDK 组件 代码 NONE 0x00000 INTERPRETER 0x10000 GC 0x20000 GROW_STACK 0x30000 JNI 0x40000 JIT_CODEGEN 0x50000 BCVERIFY 0x60000 RTVERIFY 0x70000 SHAREDCLASSES 0x80000

该示例中,vmState 值是 VM flags:0000000000000000,这指示 SDK 外部的代码中发生崩溃。该崩溃在应用程序本机库 gpf.dll 中。

当 vmState 主要组件为 JIT_CODEGEN 时,请参阅信息:JIT 和 AOT 问题确定

  • ENVINFO

    显示有关失败的 Java 运行时环境级别的信息,以及有关适当启动 JVM 进程和JVM 环境的命令行的详细信息。

    Start of changes for service refresh 11CIJITMODES 行提供有关 JIT 设置的信息。在先前的发行版中,关于 JIT 和 AOT 设置的一些信息显示在 1CIJITVERSION 行中。End of changes for service refresh

    Start of changes for service refresh 51CIPROCESSID 行显示生成 javacore 的操作系统进程的标识。End of changes for service refresh

NULL           ------------------------------------------------------------------------
0SECTION ENVINFO subcomponent dump routine
NULL =================================
1CIJAVAVERSION JRE 1.7.0 AIX ppc64-64 build 20111105_94283 (pap6470sr1-20111107_01 (SR1))
1CIVMVERSION VM build R26_JVM_26_20111104_1149_B94218
1CIJITVERSION r11_20111031_21255
1CIGCVERSION GC - R26_JVM_26_20111007_1455_B92181
1CIJITMODES JIT enabled, AOT enabled, FSD disabled, HCR disabled
1CIRUNNINGAS Running as a standalone JVM
1CIPROCESSID Process ID: 14632 (0x3928)
1CICMDLINE sdk/jre/bin/java gpf
1CIJAVAHOMEDIR Java Home Dir: /home/test/sdk/jre
1CIJAVADLLDIR Java DLL Dir: /home/test/sdk/jre/bin
1CISYSCP Sys Classpath: /home/test/sdk/jre/lib/ppc64/default/jclSC170/vm.jar....
1CIUSERARGS UserArgs:
2CIUSERARG -Xoptionsfile=/home/chamlain/build/sdk/jre/lib/ppc64/default/options.default
2CIUSERARG -Xjcl:jclse7b_26
2CIUSERARG -Dcom.ibm.oti.vm.bootstrap.library.path=/home/test/sdk/jre/lib/ppc64/default....
2CIUSERARG -Dsun.boot.library.path=/home/test/sdk/jre/lib/ppc64/default....
2CIUSERARG -Djava.library.path=/home/test/sdk/jre/lib/ppc64/default....
2CIUSERARG -Djava.home=/home/test/sdk/jre
....
  • javacore 的 ENVINFO 节包括有关运行 JVM 的操作系统环境的其他信息。该信息包括:
    • 适当的系统限制或用户限制。这些值只出现在 UNIX 平台上。
    • 有效的系统环境变量。

输出结果与以下行类似:

1CIUSERLIMITS  User Limits (in bytes except for NOFILE and NPROC)
NULL ------------------------------------------------------------------------
NULL type soft limit hard limit
2CIUSERLIMIT RLIMIT_AS unlimited unlimited
2CIUSERLIMIT RLIMIT_CORE unlimited unlimited
2CIUSERLIMIT RLIMIT_CPU unlimited unlimited
2CIUSERLIMIT RLIMIT_DATA unlimited unlimited
2CIUSERLIMIT RLIMIT_FSIZE unlimited unlimited
....
1CIENVVARS Environment Variables
NULL ------------------------------------------------------------------------
2CIENVVAR _=../build/sdk/jre/bin/java
2CIENVVAR LANG=fr_FR
2CIENVVAR LOGIN=test
2CIENVVAR SSH_TTY=/dev/pts/0
2CIENVVAR CLCMD_PASSTHRU=1
2CIENVVAR PATH=/usr/java6/bin:/usr/java6/jre/bin:/usr/bin:/etc:/usr/sbin:/usr/ucb....
2CIENVVAR LC__FASTMSG=true
2CIENVVAR LOGNAME=test
2CIENVVAR MAIL=/usr/spool/mail/test
2CIENVVAR LOCPATH=/usr/lib/nls/loc
....