Question

Mon application connaît CASHES dans la production. Le vidage sur incident indique un SIGSEGV est survenu dans GCTaskThread

Il utilise JNI, donc il pourrait y avoir une source de corruption de mémoire, même si je ne peux pas être sûr.

Comment puis-je déboguer ce problème - je pensais de faire -XX. OnError ... mais je ne suis pas sûr de ce que va me aider à résoudre cette

En outre, certains d'entre vous peut donner un exemple concret sur la façon dont le code JNI peut tomber en panne GC avec SIGSEGV

EDIT :

OS: SUSE Linux Enterprise Server 10 (x86_64)

vm_info: Java HotSpot (TM) 64 bits serveur VM (11.0-B15) pour linux-amd64 JRE (1.6.0_10-b33), construit le 26 septembre 2008 01:10:29 par "java_re" avec gcc 3.2 0,2 (SuSE Linux)

EDIT : L'arrêt de problème survenant après nous désactivons le filetage hyper, des pensées?

Était-ce utile?

La solution

Les erreurs dans le code JNI peut se produire de plusieurs façons:

The program crashes during execution of a native method (most common).
The program crashes some time after returning from the native method, often during GC (not so common).
Bad JNI code causes deadlocks shortly after returning from a native method (occasional).

Si vous pensez que vous avez un problème avec l'interaction entre le code natif écrit par l'utilisateur et la machine virtuelle Java (qui est un problème JNI), vous pouvez exécuter des diagnostics que vous aider à vérifier les transitions JNI. d'invoquer ces diagnostics; préciser le -Xcheck:. l'option JNI lorsque vous démarrez la machine virtuelle Java

Le -Xcheck: l'option JNI active un ensemble de fonctions autour des fonctions JNI. Les fonctions wrapper effectuent des contrôles sur les paramètres entrants. Ces contrôles comprennent:

Whether the call and the call that initialized JNI are on the same thread.
Whether the object parameters are valid objects.
Whether local or global references refer to valid objects.
Whether the type of a field matches the Get<Type>Field or Set<Type>Field call.
Whether static and nonstatic field IDs are valid.
Whether strings are valid and non-null.
Whether array elements are non-null.
The types on array elements.

Pls lire les liens suivants http://publib.boulder.ibm.com/infocenter/javasdk/v5r0/index.jsp?topic=/com.ibm.java.doc.diagnostics.50/html/jni_debug.html http://www.oracle.com/technetwork/java/javase/clopts-139448.html#gbmtq

Autres conseils

Utilisez Valgrind. Cela ressemble à une corruption de mémoire. La sortie sera bavard, mais essayer d'isoler le rapport à la bibliothèque JNI si son possible.

Depuis le fil défectueux semble être GCTaskThread, avez-vous essayé permettant verbose:gc et analyser la sortie (de préférence en utilisant un outil graphique comme samouraï, etc.)? Êtes-vous capable d'isoler une lib spécifique après examen du dossier de hs_err?

Aussi, pouvez-vous s'il vous plaît fournir plus d'informations sur les causes de la question et si elle est facilement reproductible?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top