Troubleshooting
Problem
When a crash occurs, the most important diagnostic data to obtain is the process core file. In order to ensure this is generated for the Java Virtual Machine (JVM) on AIX, there are a number of settings that need to be in place. The majority of the JVM settings are in place by default, but operating system settings also need to be in place.
Resolving The Problem
Operating system settings:
- To obtain full core files set the following ulimit options:
ulimit -c unlimited - turn on corefiles with unlimited size
ulimit -d unlimited - sets the user data limit to unlimited
ulimit -f unlimited - sets the file limit to unlimited
The current ulimit settings can be displayed using:
ulimit -a
These values are the "soft" limit, and are done on a per user basis. These cannot exceed the "hard" limit value.
In order to display and change to the "hard" limits, the same ulimit commands can be run using the additional -H flag.
Note: As of Java 5.0 GA, for the "ulimit -c value", the value for the soft limit will be ignored and the hard limit value will be used in order to help ensure generation of the full core file.
This can be disabled by disabling the generation of core files using the following Java command line option:
-Xdump:system:none
- The following SMIT setting also needs to be in place:
- Start smit by typing "smit" as root
- Go to System Environments -> Change/Show Characteristics of Operating System
- Set the Enable full CORE dump option to TRUE
In case SMIT administration tool is not available, please set the following flag from the command line as root user:
To set full core generation:
chdev -a fullcore=true -lsys0
To verify full core is set:
lsattr -Elsys0 | grep full
To generate core files on crash events, check that the the JVM is set to produce a core file when a crash occurs, run the following:
java -Xdump:what
which should produce the following:
In Java 5 releases,
dumpFn=doSystemDump
events=gpf+abort
filter=
label=/u/cbailey/sdk/jre/bin/core.%Y%m%d.%H%M%S.%pid.dmp
range=1..0
priority=999
request=nodumps
In Java 6 Releases:
-Xdump:system:
events=gpf+abort+traceassert,
label=/u/cbailey/sdk6/jre/bin/core.%Y%m%d.%H%M%S.%pid.%seq.dmp,
range=1..0,
priority=999,
request=serial
In Java 7 Releases:
-Xdump:system:
events=gpf+abort+traceassert+corruptcache,
label=/u/cbailey/sdk7/jre/bin/core.%Y%m%d.%H%M%S.%pid.%seq.dmp,
range=1..0,
priority=999,
request=serial
The values above are the default settings. At least events=gpf must be set in order to generate a core file when a crash occurs.
Options can be changed and/or set using the command line option:
-Xdump:system[:=, ...]
Available disk space:
It is also important to ensure that there is enough disk space available for the core file to be written to. The JVM allows the core file to be written to any directory that is specified in the label option. In order for the core file to be written to this location, there must be sufficient disk space (up to 4GB might be required on 32-bit process, and even larger for 64-bit), and the correct permissions for the Java process to write to that location.
[{"Product":{"code":"SSNVBF","label":"Runtimes for Java Technology"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Component":"Debugging Tools","Platform":[{"code":"PF002","label":"AIX"}],"Version":"7.0;6.0;5.0","Edition":"J2SE","Line of Business":{"code":"LOB36","label":"IBM Automation"}}]
Was this topic helpful?
Document Information
Modified date:
15 June 2018
UID
swg21222455