Purify de ***** - C++ - Programmation
Marsh Posté le 04-07-2002 à 11:31:14
en gros je fais
while(in_list) {
port = (hvo_port_t *)in_list->pointer;
if (port->printed == 1)
c'est le if qui me balance un UMR.
Paradoxalement plus loin j'ai if (port->index == -1) et y a pas d'UMR
Marsh Posté le 04-07-2002 à 11:39:56
joce a écrit a écrit : Uninitialize Memory Read |
le genre de truc qui apparait avec un pointeur nul c'est ca ?
t'a essayé avec diverses compilateurs ?
Marsh Posté le 04-07-2002 à 11:49:13
non si c'etait un pointeur nul ca causerait pas de probleme.
C'est juste purify considere que j'ai pas initialise le contenu du pointeur que je lis, et donc qu'il peut y avoir nawak dedans.
Or il est bien initialise normalement
Pour le compilo j'ai pas trop le choix, on compile sous Solaris avec Forte au taf (au moins sur les OS 5.7)
Marsh Posté le 04-07-2002 à 12:41:52
ReplyMarsh Posté le 04-07-2002 à 12:52:10
Ton pointeur pointe bien vers qq chose ?
(Quand au debugger souvent ss delphi il dit que ya s'qui fo alors qu'en réalité....)
Marsh Posté le 04-07-2002 à 12:54:52
[SDF]Poire a écrit a écrit : Ton pointeur pointe bien vers qq chose ? (Quand au debugger souvent ss delphi il dit que ya s'qui fo alors qu'en réalité....) |
ba oui la structure port est ok, et j'ai partout initialisé la structure juste après l'allocation mémoire.
C'est ca qui me trou le cul
Marsh Posté le 04-07-2002 à 13:19:49
Un chtit bout de code ou C top secret ?
Marsh Posté le 04-07-2002 à 13:26:58
[SDF]Poire a écrit a écrit : Un chtit bout de code ou C top secret ? |
Confidentiel.
ceci grosso merdo :
Code :
|
Marsh Posté le 04-07-2002 à 13:44:09
Juste comme ça... (C ptet une connerie.... ça fait longtemps que G pas fait de C++ et G pas vraiment pratiqué...)
memset((void *) module->ports,0 ,count*sizeof(hvo_port_t))
à la place du -> C pas un . qu'il fo ?
(suis ptet à côté de mes pompes hein )
Marsh Posté le 04-07-2002 à 13:45:18
[SDF]Poire a écrit a écrit : Juste comme ça... (C ptet une connerie.... ça fait longtemps que G pas fait de C++ et G pas vraiment pratiqué...) memset((void *) module->ports,0 ,count*sizeof(hvo_port_t)) à la place du -> C pas un . qu'il fo ? (suis ptet à côté de mes pompes hein ) |
hum normalement non (sinon je fais foutre l'adresse de ports à 0 + les adresses qui suivent d'une longueur de count*sizeof(hvo_port_t) je vais joliment écraser des zones mémoires à la bourrin ).
De toute façon j'ai initialisé à part dans une boucle module->ports->printed pour chaque port, et c'est pareil
Marsh Posté le 04-07-2002 à 13:46:33
Oué...
Beh bonne chance
Marsh Posté le 04-07-2002 à 14:16:50
Bon finalement j'ai fait :
Code :
|
et c'est bon
m'enfin c'est zarbe...
Marsh Posté le 05-07-2002 à 02:21:23
Purify, c'est un utilitaire qui vérifie la cohérence du code ?
Alors, il ne fait pas le lien entre memset et l'initialisation des champs de la structure.
Ca se comprend.
Essaye:
Code :
|
Marsh Posté le 05-07-2002 à 08:09:52
musaran a écrit a écrit : Purify, c'est un utilitaire qui vérifie la cohérence du code ? Alors, il ne fait pas le lien entre memset et l'initialisation des champs de la structure. Ca se comprend. Essaye:
|
Purify vérifie qu'il y a pas de problème d'accès en mémoire, d'allocation foireuse, de lecture non initialisé etc.
M'enfin le problème était zarbe.
Marsh Posté le 05-07-2002 à 20:52:04
c'est pas grave les UMR
si tu veux tous les corriger en général tu y passerais des années.
les ABW ou les FMW ca c'est grave, il faut corriger
Marsh Posté le 09-07-2002 à 18:14:56
Oualb a écrit a écrit : c'est pas grave les UMR si tu veux tous les corriger en général tu y passerais des années. les ABW ou les FMW ca c'est grave, il faut corriger |
heu je considère qu'UMR c'est grâve désolé, surtout quand tu testes si le champ == NULL ou pas.
Y a pas un seul UMR dans l'appli
Marsh Posté le 04-07-2002 à 11:26:40
Hummm, j'ai un ch'ti probleme avec purify.
En gros j'ai une structure avec toutes les variables bien initialisees (memset powered).
Ensuite je construit une liste de pointeur vers differents elements ayant la structure en question.
Le probleme c'est quand je teste un des elements de la structure ( on va dire structure->printed), je me mange un joli UMR
apres passage au debuggeur, la structure est pourtant bien comme il faut, et y a pas de garbage dans le champ.
C'est possible que purify se prenne les pieds dans le tapis ? (et comment faire pour qu'il ne me fasse plus chier )