[VB6] Erreur système : Problème de lecture de mémoire

greedium Messages postés 27 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 7 août 2007 - 4 mai 2006 à 19:20
greedium Messages postés 27 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 7 août 2007 - 9 mai 2006 à 18:58
Bonjour,

Mon problème n'est facile a expliquer, puisque qu'il ne concerme pas vraiment le code ...
Je cherche qq'un qui aurait déjà rencontré ce problème, ou un expert qui s'aurait m'expliquer ce qui se passe ( et/ou comment le réparer...:o).

Depuis quelques temps, j'ai de grosses erreurs système dans mon appli (gestion de devis d'électricité) :
Il me lance des erreurs "La mémoire ne peut pas être 'read' " au bout de quelques manipulations. C'est reproductible mais pas tout le temps, et ça commence à intervenir de + en + fréquemment...
Généralement ça fonctionne bien lorsque j'ouvre l'appli et un 1er devis (sauvegardé en BD et chargé dans un ensemble d'objets) mais lorsque que j'en ouvrir un 2eme, là le plantage peu intervenir à n'importe quel moment ...
C'est quasiment impossible à débugger vu que c'est VB6.exe qui plante et qu'il ferme donc tout (les sources). Je le soupçonne de vouloir lire des propriétés d'un objet du second devis en ce référençant à la zone mémoire instanciée par l'objet créé dans le 1er devis ...
Bon je sais ce n'est pas très clair... mais je n'y comprends pas gd chose moi-même, et je n'ai pas assez d'expérience en VB ou en Système d'exploitation, pou comprendre ce qui se passe.
Ce qui me perturbe bcp c'est que il y a un mois, ça fonctionnait bien (du moins avec des bugs "normaux" ) et que les modifications que j'ai effectuées depuis ne me semble pas en cause... j'ai du insconscienmment changer qqchose qui me génére c'est erreur de mémoire, mais quoi !? Mon application contient des Controles Utilisateurs. Je sais que j'en
ai modifié un il y a peu de temps et j'en ai rajouté un autre. J'ai aussi touché à mon formulaire principal qui contient bcp de controles , dont les controles utilisateurs. J'ai aussi touché a une Toolbar en rajoutant des boutons et des images et au Menu principal.
A part ces modifications de structures, je ne vois pas bien ce qui générerait les bugs ... j'ai de forts soupçons sur les Controles Utilisateurs, parce que je ne les maitrise pas bcp , mais c'est tout...

Alors, PLEASE HELP !!!
Merci d'avance !

14 réponses

greedium Messages postés 27 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 7 août 2007
4 mai 2006 à 19:36
Au fait, je ne sais pas si ça aide mais depuis le même moment j'ai des problème de rafraichissement d'un de mes Controles Utilisateurs
Par exemple : j'ai rajouter 2 CmdButton et une TxtBox sur ce Controle Utilisateur contenue daans mon formualire principal et souvent quand je l'affiche, les boutons et la zone de texte reste gris, mais si je réduit et maximise la fenetre, ça apparait bien ... je sais pas si j'ai oublié une propriété pour le gestion de l'affichage graphique ou pas.
Ce n'est pê pas lié, avec les erreurs système, mais comme c'est apparu à peu près au même moment, je le signale ...

PS: Je tiens à préciser que ce n'est pas moi qui est développé cette application à l'origine.., c'est pour ça que j'ai du mal .
0
asecher Messages postés 262 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 27 avril 2007 1
4 mai 2006 à 20:06
Vous avez essayé d'implémenter une gestion d'erreur ?
Je sais, ce n'est pas le plus amusant, mais ça permet de "catcher" les erreurs en "marquant" les objets qui font planter l'application.....

De plus, même si le comportement de VB est différent quand on est en environnement de développement (mode pas-à-pas, espions, etc.) ou en exécutable, la gestion d'erreur reste un passage obligatoire du développement....

Cordialement,

Alain 31
0
greedium Messages postés 27 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 7 août 2007
4 mai 2006 à 22:46
Le problème c'est que c'est n'est pas une erreur interne du logiciel mais plutot une erreur du systeme...
Il y a déjà pas mal de gestion d'erreurs dans l'application, et j'ai essayé d'en rajouter ( "On Error ..." ) à un endroit où j'avais remarqué un de ces plantages (je fais un "if Visible then" dans une fonction d'un Form et ça plante sur le Visible dont il n'arrive pas à lire la valeur, même en pas à pas ... ??). Et bien l'erreur étant "externe" (faute d'un meilleur terme), il ne réagit pas au "On Error" ...(ou je faisais afficher "err.description") Du coup difficile de comprendre ce qui arrive.
Surtout que les plantages arrive sur plein d'objets différents, ce n'est pas tjs le meme...

Mais merci qd même d'essayer de m'aider, ça me fait bien plaisir, parce que là je déprime un peu sur ça ...

PS: J'ai meme eu droit a un plantage avec "If Not Niveau Is Nothing Then ..." Niveau étant un objet instancié d'une classe créée. Il n'arrive pas à lire la valeur de Niveau pour le test ...
0
asecher Messages postés 262 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 27 avril 2007 1
4 mai 2006 à 23:08
Et en mode pas à pas, il y a le même plantage ?

Alain 31
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
greedium Messages postés 27 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 7 août 2007
4 mai 2006 à 23:38
Quand j'arrive à le trouver, oui, le plantage persiste...
A vrai dire quand je passe la souris sur ma variable ou mon objet (en mode pas à pas ) pour en voir la valeur dans le ToolTip, ça plante VB direct avec "la mémoire ne peut pas être 'read' "
Quand je disais que ce n'était pas une erreur du logiciel mais du système (ou de VB6.exe plutot) , je pense que c'est un bon exemple de mon problème ... Et de la difficulté que j'ai à le résoudre (parce que le code semble correct sinon).
J'ai bien du mal à comprendre ce genre d'erreurs que je ne maitrise pas du tout.

Que faire ... ?
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
5 mai 2006 à 08:08
salut,
tu n'aurais pas un timer à intervalle court, avec pas mal d'instructions?
tes variables sont toutes correctement déclarées et typées?
tes tableaux et objets sont détruits correctement?
ton appli contient des images (bmp jpg) volumineuses?
as-tu essayé de faire tourner temporairement l'appli en te passant du usercontrol instable?

++
0
greedium Messages postés 27 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 7 août 2007
5 mai 2006 à 10:32
Bonjour

Non, je ne penses pas que cela vienne des timers. j'en utilise peu, et ils n'ont pas d'intervalles, juste pour un déclenchement unique.
Les variables sont bien déclarées et typées (j'utilise "Option Explicit"). De plus, il me semble que VB détecte ce genre d'erreurs sans forcement planter en Debug.
Pour les tableaux, ça je ne sais pas trop ... j'en ai rajouter dans le-dit UserControl pour indexer les colonnes d'une FlexGrid. Mais je n'utilise pas de destruction particuliere
Pour les objets, là par contre, je sais qu'il y a de la destruction, mais je ne sais pas comment ça marche... le problème peut venir de là je pense.
J'ai rajout é la posibilié d'importé uen image qui p-ê volumienuse mais, a part ralentir l'appli ça ne la jamais fait planter.
Je ne pense pas que l'appli puisse tourner sans ce UserControl, même si il n'est pas tout le tps utilisé, il y a bcp de réference dans le formulaire principal.
De +, j'arrive à obtenir des plantages de "mémoire ne peut être 'read' " ou "mémoire ne peut être 'written' " même quand je n'utilise pas le UserControl (supposé...) instable.

Je pense que le problème que j'ai en mode pas à pas (plantage de VB lorsque je veux voir la valeur d'une propriété ou d'un objet dans le ToolTip, en passant la souris par dessus) exclu à peu près tous ces hyporthèses (à part peut être la mauvaise destruction d'objets...).
Il y a du avoir un effet de bord très bizarre lorsque j'ai fait mes modifs ce dernier mois, sur la gestion de la mémoire (pour les objets surtout). Mais comment et pourquoi., je reste sec ...
Et de là à planter VB ... !

Quelqu'un n'aurait pas déjà rencontré ce problème ... ?

Et merci encore de votre participation !
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
5 mai 2006 à 11:28
planter VB sans debug, çà peut aussi être un problème de hook / subclassing.
(rien que la gestion de la molette sur la grid par exemple...)
0
greedium Messages postés 27 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 7 août 2007
5 mai 2006 à 15:28
Non ce n'est pas le hook ou le subclassing, je ne l'utilise pas à cause de son instabilité justement...
J'ai juste le plug-in MouseWheel Fix pour utilisé la molette en développement ... et depuis 1 an que je l'ai installé, ça n'a jamais causé de tels bugs...
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
5 mai 2006 à 15:51
ce Fix ... il y en a 3 4 versions sur CS. si il en vient, regarde dans les commentaires si c'est déjà arrivé....
perso j'en utilise un (mais lequel, va savoir ^^) ; jamais eu de souci, du moins pas fatal.

là je suis à court d'idée...
0
greedium Messages postés 27 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 7 août 2007
5 mai 2006 à 17:05
Merci qd même...

Je viens de refaire le tour du code, et je pense que j'ai trouvé une des causes : un objet qui était chargé une 1ere fois, sans problème, mais lorsque je changeais de devis pour charger les nouveaux objets, n'était pas modifié, et gardé en mémoire l'objet du 1er devis. VB devait donc vouloir acceder à une zone mémoire où il n'avais plus le droit d'accéder...? Je dis comme ça je n'y connais pas grand chose en gestion de mémoire...
Mais ça m'étonne qd même que ça fasse autant planter VB, au lieu de me mettre un message d'erreur comme quoi la référence n'est pas bonne ou que l'objet n'est plus existant ...

J'aimerais bien comprendre pourquoi un tel plantage ... mais là, je sais que c'est bcp demander ;o)
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
5 mai 2006 à 21:30
non tu n'accéderais plus à cette zone mais VB, en plantant, indiquerait plutôt "dépassement pile" parce qu'il rechargerait, ou un truc du genre...

éventuellement. j'peux jeter un oeil à ton projet si tu veux.
0
rayjul Messages postés 13 Date d'inscription jeudi 2 décembre 2004 Statut Membre Dernière intervention 24 septembre 2008
5 mai 2006 à 23:04
J'ai bien rencontré ton problème mais ne suis pas parvenu à le résoudre.
"accéder à la form"
. Lors de toute tentative pour acceder à une form dans un projet en cours - pour l'améliorer par exemple - VB6 m'annonce " à l'adresse - suit une adresse - ..... la mémoire ne peut-être "read" et me dirige vers le débogueur VC++. J'ai réinstallé Visual Studio mais rien n'y fait

evajul
0
greedium Messages postés 27 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 7 août 2007
9 mai 2006 à 18:58
PCPT >> Merci mais je ne pense pas que mettre le nez dans les 80 000 lignes de codes de mon projet te plaise vraiment ...

Rayjul >> Ah! enfin qq'un qui a eu un problème similaire ... Le tien à l'air même pire vu qu'il semble apparaitre quand tu es en design ... ?!

De mon coté, suite à ma dernière correction, les plantages se sont un peu calmé, mais il m'en reste quelques'uns que j'ai du mal à reproduire ...
0