Bonjour,
Je viens de débugé une DLL écrite en C pour une application Java. Cette dll provoquait des crash (non systématique) de l'application Java lors de l'initialisation :
Après un peu de temps, la cause du crash s'est rapprochée des lignes suivantes :#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7706e3be, pid=476, tid=4880
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_13-b05 mixed mode)
# Problematic frame:
# C [ntdll.dll+0x2e3be]
#
En sachant que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 char * sChemin = NULL; char nomIni[250]="\0"; sChemin = sC_GEN_AddSepToDirectory(nomFichier); strcat(sChemin,"MONFICHIER.INI");
En comparant avec le reste du code C à ma disposition dans cette DLL, j'ai mis le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 FCT_EXP char * sC_GEN_AddSepToDirectory(char * _sChemin) { // L'implémentation de la méthode ... }
Après une série d'essai, je n'ai plus de crash de l'application avec la DLL corrigé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 char sChemin[250] = "\0"; strcpy(sChemin,sC_GEN_AddSepToDirectory(nomFichier)); printf(sChemin); strcat(sChemin,"MONFICHIER.INI");
Ma question est pourquoi la DLL provoquait un crash ?
Cordialement,
Patrick Kolodziejczyk.
Partager