Erreur lecture ou écriture mémoire: could not be read ou written.

Le
pilidj
Bonjour,

J'ai un problème difficile à débuguer.
Lors de l'éxécution de mon application, j'ai ce message qui apparait.

"The instruction at "0xXXXXXXXX" referenced memory at "0xXXXXXXXX". The memory could not be "read". Click on OK to terminate the program."

avec comme titre mon application.

Qu'est-ce qui peut provoquer ce message?

Ce programme s'execute sur XP embedded.
Je précise que le problème n'est pas physique puisque j'ai déjà changé la barette mémoire et cela se produit toujours.
Ce problème est aléatoire.

Dans mon programme j'utilise des property let et get, je communique à un executable par une dll, qui écrit dans des fichiers logs.
J'utilise vb6.

merci.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Christian Hubert-Hugoud / weabow - Xtrem7
Le #19120561
Difficile de répondre en l'état des informations.

Il faudrait que tu réussisses à trapper quelque chose quelque part.

J'arrive plutôt bien à produire ce type d'erreur en voulant écrire une
propriété dans une fenêtre d'une autre application.

Est-ce que tu communiques avec d'autres logiciels, et comment ?

Christian

"pilidj" news:
Bonjour,

J'ai un problème difficile à débuguer.
Lors de l'éxécution de mon application, j'ai ce message qui apparait.

"The instruction at "0xXXXXXXXX" referenced memory at "0xXXXXXXXX". The
memory
could not be "read". Click on OK to terminate the program."

avec comme titre mon application.

Qu'est-ce qui peut provoquer ce message?

Ce programme s'execute sur XP embedded.
Je précise que le problème n'est pas physique puisque j'ai déjà changé la
barette mémoire et cela se produit toujours.
Ce problème est aléatoire.

Dans mon programme j'utilise des property let et get, je communique à un
executable par une dll, qui écrit dans des fichiers logs.
J'utilise vb6.

merci.


Jean-marc
Le #19121241
pilidj wrote:
Bonjour,

J'ai un problème difficile à débuguer.
Lors de l'éxécution de mon application, j'ai ce message qui apparait.

"The instruction at "0xXXXXXXXX" referenced memory at "0xXXXXXXXX".
The memory could not be "read". Click on OK to terminate the program."

avec comme titre mon application.

Qu'est-ce qui peut provoquer ce message?



Le problème est dans la DLL, ou dans une des fonctions
de la Dll.

Soit une des fonctions de la DLL est vraiement fautive, soit
elle reçoit un paramètre incorrect pour laquelle elle n'est pas
protégée.

Le message que tu obtiens indique le déférencement d'un pointeur
incorrect, par exemple une tentative d'accès mémoire avec un
pointeur NULL ou mal initialisé, un buffer overrrun, bref des
choses de ce genre.

Par exemple, on peut imaginer que tu passes à ta fonction le nom d'un
fichier dans lequel écrire, que ce fichier soit protégé en écriture ou
inaccessible, que du coup le fopen(...) échoue et retourne NULL et que
la fonction dans la DLL ne le teste pas et tente d'écrire en utilisant
un pointeur de fichier à NULL. Ca peut être des milliers de raison,
j'ai juste donné un exemple fictif.

Si tu as le code de la DLL, c'est facile à débugger avec Visaul Studio.

Sinon, tu n'as plus qu'à instrumenter ton code en loggant dans un fichier
local tous les appels aux fonctions de la DLL.
Du genre:
Call Add2Log("avant l'appel de la fonction toto")
' rem ici l'appel de toto, fonction de ta dll
Call Add2Log("après l'appel de la fonction toto")
...
Call Add2Log("avant l'appel de la fonction titi")
' rem ici l'appel de titi, fonction de ta dll
Call Add2Log("après l'appel de la fonction titi")

Puis tu lis ton fichier de log au prochain crash.
Il devrait terminer par un truc du genre:
...
avant l'appel de la fonction titi

Ainsi, tu auras localisé le problème. Il ne reste plus qu'à ajouter au log
file
le détail de tous les paramètres que tu passes à ta fonction, tu verras
ainsi
peut être la cause de l'erreur.

Cordialement,

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Patrick
Le #19215681
Pour compléter la méthode de jean marc, voici un petit source que j'utilise
pour écrire mes logs :

J'appelle OpenLogFile lors du lancement de l'appli
J'appelle PrintLog lorsqu'une procédure "bug" ou régulièrement dans le prog
(lors d'actions particulièrs des utilisateurs)



Public Sub OpenLogFile()

On Error Resume Next
MonLog = FreeFile
Open AppliPath & App.EXEName & ".log" For Output As #MonLog
Print #MonLog, "OUVERTURE Le " & Format(Now, "dd/mm/yyyy hh:nn:ss") &
" - Version = " & App.Major & "." & App.Minor & "." & App.Revision & vbCrLf
Close #MonLog
On Error GoTo 0

End Sub

Public Sub PrintLog(texte As String, Optional Objet As Control = Null,
Optional Feuille As Form = Null)

On Error Resume Next
MonLog = FreeFile
Open AppliPath & App.EXEName & ".log" For Append As #MonLog
Print #MonLog, Format(Now, "dd/mm/yyyy hh:nn:ss") & " - ";
Print #MonLog, texte;
If Not IsNull(Feuille) Then Print #MonLog, " - " & Feuille.Name;
If Not IsNull(Objet) Then
Print #MonLog, " - " & Objet.Name;
If TypeOf Objet Is TextBox Then
Print #MonLog, " =" & Replace(Objet.Text, vbCrLf, vbCrLf &
vbTab);
ElseIf TypeOf Objet Is CheckBox Or TypeOf Objet Is OptionButton Then
Print #MonLog, " = " & Objet.Value;
End If
End If
Print #MonLog, vbCrLf;
Close #MonLog
On Error GoTo 0

End Sub


"pilidj"
Bonjour,

J'ai un problème difficile à débuguer.
Lors de l'éxécution de mon application, j'ai ce message qui apparait.

"The instruction at "0xXXXXXXXX" referenced memory at "0xXXXXXXXX". The
memory
could not be "read". Click on OK to terminate the program."

avec comme titre mon application.

Qu'est-ce qui peut provoquer ce message?

Ce programme s'execute sur XP embedded.
Je précise que le problème n'est pas physique puisque j'ai déjà changé la
barette mémoire et cela se produit toujours.
Ce problème est aléatoire.

Dans mon programme j'utilise des property let et get, je communique à un
executable par une dll, qui écrit dans des fichiers logs.
J'utilise vb6.

merci.


Publicité
Poster une réponse
Anonyme