-
Function Call corruption
Bonjour à tous.
J'ai un défaut de corruption de stack...
Grace au débugger, j'ai pu isoler le moment ou la corruption se produit. Mais c'est très étrange...
Admettons je suis sur une fonction de niveau 4. Dans celle-ci j'entre dans une sous fonction (donc lvl 5), au seins de laquelle j'entre dans une autre (lvl6)...
Jusque là pas de problème.
La corruption se produit au moment ou le code passe dans "}" de fermeture de la fonction lvl6, entrainant une perte de l’adresse du niveau 4...
Avez-vous déjà rencontrer le problème?
Avez-vous une idée, des axes de recherches etc pour m'aider à avancé?
Merci d'avance pour votre aide...
Iko
EDIT: Apres avoir utilisé le "disassemble", je m'apercoit que c'est le "pop ebd" qui génère le défaut (situé juste avant le "ret")
-
Il suffit que tu « débordes » d'une variable locale (et que tu écrives n'importe où dans la pile) pour que ça arrive.
Sans ton code, ça va être compliqué de t'aider.
-
Bonjour
Merci de ta réponse.
Après relecture, il s'agissait effectivement d'un débordement d'écriture...
Je travaille actuellement avec un version VC++ 6.0... et j'intègre le soft de mes ptits copains...
Le problème venait d'un tableau définit à [4] dans lequel on met (via une boucle) 5 éléments...
Cependant la conséquence sur la stack est étrange...C'est le niveau lvl6 qui est touché au lieu du direct lvl5...
Mon collègue me dédommagera en Ptit Filou ;)
Encore merci pour l'aide :)
@++
Iko