Development
Produit | JVM IBM |
Version | 4, 5 ,6 |
OS | Aix |
Steps to follow in order to obtain complete informations about Java problem:
For any of those signal, a java core, a core dump and the shared libraries associated to the Java application and JVM is helpful
Enable full core
Enable full core with the following command:
chdev -l sys0 -a fullcore=true
Modify ulimit values
For the user that launches the JVM, set the following limits
ulimit -c unlimited -f unlimited
(this can also be done in the /etc/security/limits file by setting core=-1 and file =-1 for the user that is used to launch the JVM)
Beware of the "unlimited" keyword above mentioned.
Actually the above command sets the maximum limits to the hardware limits that could be displayed thanks to the ulimit -H -c -f
This is the same thing if limits are set in the /etc/security/limits, the core_hard and fsize_hard should not be set to too low values if they
are not set to -1.
If you alter those values (soft or hard) in the /etc/security/limits file then log in the system again in order for the changes to take
effect and check that it is the case with :
ulimit -a ulimit -Ha
Set core file location
By default the core file is written in the current directory, that is in the location the JVM was launched from.
You can redirect the core file generation in a best suited directory that have much space with the following command as
you are running AIX 5.3.
syscorepath -p alternate_directory
Be sure that the user who wil launch the JVM have both read and write permissions on that directory
Set environment variables
Once done, when logged in the system as the user who will launch the JVM, export the following variables
export IBM_NOSIGHANDLER=true export JAVA_DUMP_OPTS="ONANYSIGNAL(NONE)"
Launch the JVM and you should get a core file when the JVM crash with a signal 11.
As a result, exporting "JAVA_DUMP_OPTS="ONANYSIGNAL(NONE)" instructs the JVM not to use any signal handler registered by
the JVM at launch time, in other words, no handler for SIGSEGV.
A core file is thereby genereted by the AIX Operating System itself and it directly points to the failure.
Data collection
The shared libraries used by the process at the time of the crash can be collected using the snapcore command:
snapcore -d save_directory core.001 fullpath_executable
Documentation
- Troubleshooting Java code on AIX: Data collection for AIX core dumps