Development
Informations utiles à collecter en cas d'abort de la JVM IBM
Produit | JVM IBM |
Version | 4, 5 ,6 |
OS | Aix |
Recommandations pour collecter les informations utiles au support
En cas de crash de la JVM sur des exceptions (SIGSEGV, SIGILL...), il est conseillé de founir le java core, le core dump et les librairies partagées associées à la JVM et à l'application.
Générer un core complet
Pour obtenir un core complet, lancer la commande suivante (avant le lancement de la JVM):
chdev -l sys0 -a fullcore=true
Modifier les valeurs de ulimit
Pour l'utilisateur lançant la JVM, positionner les limites suivantes (tailles du core et des fichiers):
- soit par la commande :
ulimit -c unlimited -f unlimited
- soit en positionnant core=-1 et file =-1 dans le
fichier /etc/security/limits
Attention au mot-clé "unlimited": la commande précédente positionne la limite maximum de la limite hardware (rendue par la commande ulimit -H -c -f)
Si les limites sont positionnées dans le fichier etc/security/limits, les valeurs de core_hard et fsize_hard ne doivent pas être positionnées à des valeurs trop faibles (si elles sont différentes de -1)
Après modification des valeurs (soft ou hard) dans le fichier /etc/security/limits, se reconnecter au système pour que les modifications soient prises en compte, et vérifier ces valeurs par les commandes:
ulimit -a ulimit -Ha
Localiser le fichier core
Par défaut, le fichier core est créé dans le répertoire courant (répertoire d'où est lancée la JVM).
La génération du core peut être redirigée vers un autre répertoire (ayant plus d'espace) par la commande (sous Aix 5.3):
syscorepath -p alternate_directory
S'assurer que l'utilisateur qui lancera la JVM possède les droits de lecture et d'écriture sur ce répertoire.
Positionner les variables d'environnement
Connecté au système sous l'utilisateur lançant la JVM,, exporter les variables suivantes:
export IBM_NOSIGHANDLER=true export JAVA_DUMP_OPTS="ONANYSIGNAL(NONE)"
Lancer la JVM. Le crash de la JVM sur un signal (11 par exemple) génèrera un fichier core.
En effet, l'export de "JAVA_DUMP_OPTS="ONANYSIGNAL(NONE)" demande à la JVM de ne pas traiter le signal.
Le fichier core est alors généré par AIX.
Collecter les données
Les librairies partagées utilisées par le process au moment du crash peuvent être collectées par la commande snapcore:
snapcore -d save_directory core.001 fullpath_executable
Documentation
- Troubleshooting Java code on AIX: Data collection for AIX core dumps