IBM Support

IBM Technology for Java - jextract

Troubleshooting


Problem

This document shows an example of how to run the jextract utility on the operating system.

Resolving The Problem

The IBM Technology for Java virtual machine can produce system dumps in response to specific events. A system dump is a raw binary dump of the process memory when the dump agent is triggered by a failure or by an event for which a dump is requested. System dumps are produced in a platform-specific binary format, typically as a raw memory image of the process that was running when the dump was initiated. If the Rochester Support Center requests a system dump to be send, the jextract tool must be used to properly gather the data on the system.

Jextract on the operating system is found in the JDK directory path as follows:

/QOpenSys/QIBM/ProdData/JavaVM/jdk70/32bit/jre/bin - JDK 7.0 32bit
/QOpenSys/QIBM/ProdData/JavaVM/jdk70/64bit/jre/bin - JDK 7.0 64bit
/QOpenSys/QIBM/ProdData/JavaVM/jdk71/32bit/jre/bin - JDK 7.1 32bit
/QOpenSys/QIBM/ProdData/JavaVM/jdk71/64bit/jre/bin - JDK 7.1 64bit
/QOpenSys/QIBM/ProdData/JavaVM/jdk80/32bit/jre/bin - JDK 8.0 32bit
/QOpenSys/QIBM/ProdData/JavaVM/jdk80/64bit/jre/bin - JDK 8.0 64bit
/QOpenSys/QIBM/ProdData/JavaVM/jdk11/64bit/bin     - JDK 11  64bit
/QOpenSys/QIBM/ProdData/JavaVM/jdk17/64bit/bin     - JDK 17  64bit
/QOpenSys/QIBM/ProdData/JavaVM/jdk21/64bit/bin     - JDK 21  64bit

You must first determine the JDK being used by the JVM. This information is shown in the joblog:

Message ID . . . . . . : JVAB302
Message type . . . . . : Diagnostic
Message . . . . : Java virtual machine is IBM Technology for Java.
PID(166985)
Cause . . . . . : JAVA_HOME environment variable is
/QOpenSys/QIBM/ProdData/JavaVM/jdk80/64bit



This information tells we are using JDK 8.0 64 bit. In order to gather the jextract properly, we need to use the jextract command from the /QOpenSys/QIBM/ProdData/JavaVM/jdk80/64bit directory.

Determine where the system dump file was written before running jextract against it. The joblog of the JVM contains the dump file location. The following example is from a WebSphere Application Server JVM:

JVAB56D Diagnostic 00 03/05/14 08:14:07.950787 QXJ9UTLJVM QJVM5064 *STMT QXJ9VM QJVM5064 *STMT
From module . . . . . . . . : QXJ9UTLJVM
From procedure . . . . . . : JvaSendMsg
Statement . . . . . . . . . : 16
To procedure . . . . . . . : xj9SendDiagMsgToJobLog
Statement . . . . . . . . . : 22
Thread . . . . : 00000344
Message . . . . : JVMDUMP010I System dump written to
/QIBM/UserData/WebSphere/AppServer/V85/ND/profiles/amh/core.20140305.081405.166985.0001.dmp


Here is an example of running jextract. Notice that it runs from within Qshell:

A. STRQSH

B. /QOpenSys/QIBM/ProdData/JavaVM/jdk80/64bit/jre/bin/jextract /QIBM/UserData/WebSphere/AppServer/V85/ND/profiles/amh/core.20140305.081405.166985.001.dmp

For Java 11, a similar command would be...
/QOpenSys/QIBM/ProdData/JavaVM/jdk11/64bit/bin/jextract /home/core.20140305.081405.166985.001.dmp

Loading dump file...
Read memory image from /QIBM/UserData/WebSphere/AppServer/V85/ND/profiles/amh/core.20140305.081405.166985.0001.dmp
VM set to 0000000180104568
Dumping JExtract file to /QIBM/UserData/WebSphere/AppServer/V85/ND/profiles/amh/core.20140305.081405.166985.0001.dmp.xml
<!-- extracting gpf state -->
<!-- 11ms -->
<!-- extracting classes -->
...............................................................................................................<!-- 20361ms -->
<!-- extracting classloaders -->
..................<!-- 20456ms -->
<!-- extracting monitors -->
<!-- 20687ms -->
<!-- extracting threads -->
.<!-- 21208ms -->
<!-- extracting trace buffers -->
<!-- 21210ms -->
<!-- extracting roots -->
................................................................................<!-- 21957ms -->
<!-- extracting objects -->
-->
Finished writing JExtract file in 57059ms
Creating archive file: /QIBM/UserData/WebSphere/AppServer/V85/ND/profiles/amh/core.20140305.081405.166985.0001.dmp.zip
Adding "/QIBM/UserData/WebSphere/AppServer/V85/ND/profiles/amh/core.20140305.081405.166985.0001.dmp"
Adding "/QIBM/UserData/WebSphere/AppServer/V85/ND/profiles/amh/core.20140305.081405.166985.0001.dmp.xml"
.
..
Adding "/QOpenSys/QIBM/ProdData/JavaVM/jdk80/64bit/jre/lib/TraceFormat.dat"
Adding "/QOpenSys/QIBM/ProdData/JavaVM/jdk80/64bit/jre/lib/J9TraceFormat.dat"
jextract complete.
$


By default, output is written to a file called <dumpfile>.zip in the current directory. This file is a compressed file that contains:
 
  • The dump
  • XML produced from the dump, containing details of useful internal JVM information
  • Other files that can help in diagnosing the dump (such as trace entry definition files)

Detailed information on how to upload data to IBM Support can be found here: https://www.ibm.com/support/pages/node/644037

[{"Type":"MASTER","Line of Business":{"code":"LOB68","label":"Power HW"},"Business Unit":{"code":"BU070","label":"IBM Infrastructure"},"Product":{"code":"SWG60","label":"IBM i"},"ARM Category":[{"code":"a8m0z0000000CH5AAM","label":"Java Development Kit"}],"ARM Case Number":"","Platform":[{"code":"PF012","label":"IBM i"}],"Version":"7.3.0;7.4.0;7.5.0;7.6.0"}]

Historical Number

494566468

Document Information

More support for:
IBM i

Component:
Java Development Kit

Software version:
7.3.0, 7.4.0, 7.5.0, 7.6.0

Operating system(s):
IBM i

Document number:
635465

Modified date:
21 May 2025

UID

nas8N1013545

Manage My Notification Subscriptions