Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2470 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Purify de *****

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Purify de *****

n°170987
joce
Architecte / Développeur principal
"BugHunter"
Posté le 04-07-2002 à 11:26:40  profilanswer
 

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 :mad:
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 :mad:)
 

mood
Publicité
Posté le 04-07-2002 à 11:26:40  profilanswer
 

n°170996
joce
Architecte / Développeur principal
"BugHunter"
Posté le 04-07-2002 à 11:31:14  profilanswer
 

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 :/

n°171005
Profil sup​primé
Posté le 04-07-2002 à 11:33:28  answer
 

c'est quoi un UMR ??
U???????? Memory Resource non ?

n°171012
joce
Architecte / Développeur principal
"BugHunter"
Posté le 04-07-2002 à 11:37:29  profilanswer
 

Uninitialize Memory Read

n°171015
Profil sup​primé
Posté le 04-07-2002 à 11:39:56  answer
 

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 ?

n°171033
joce
Architecte / Développeur principal
"BugHunter"
Posté le 04-07-2002 à 11:49:13  profilanswer
 

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)

n°171072
joce
Architecte / Développeur principal
"BugHunter"
Posté le 04-07-2002 à 12:41:52  profilanswer
 
n°171080
[SDF]Poire
Vive Grumly
Posté le 04-07-2002 à 12:52:10  profilanswer
 

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é....)


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°171081
joce
Architecte / Développeur principal
"BugHunter"
Posté le 04-07-2002 à 12:54:52  profilanswer
 

[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 :/


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°171096
[SDF]Poire
Vive Grumly
Posté le 04-07-2002 à 13:19:49  profilanswer
 

Un chtit bout de code ou C top secret ?


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
mood
Publicité
Posté le 04-07-2002 à 13:19:49  profilanswer
 

n°171101
joce
Architecte / Développeur principal
"BugHunter"
Posté le 04-07-2002 à 13:26:58  profilanswer
 

[SDF]Poire a écrit a écrit :

Un chtit bout de code ou C top secret ?




Confidentiel.
 
ceci grosso merdo :
 

Code :
  1. module->ports = (hvo_port_t *)util_alloc_memory(count*sizeof(hvo_port_t)); // allocation via le pool de mémoire
  2. memset((void *) module->ports,0 ,count*sizeof(hvo_port_t))
  3. ensuite :
  4. port = module->ports;
  5. while(i<module->nport) { // module->nport c'est le nombre de port
  6.    util_add_pointer(&in_list,port, (int*) port); // rajout du port dans la liste de pointeur
  7.    port++;
  8. }
  9. while(in_list) {
  10.   port = (hvo_port_t *)in_list->pointer;
  11.   if (port->printed == 1) { // UMR de MAIRDE
  12.     [...]
  13.   }
  14.   in_list=in_list->next;
  15. }


Message édité par joce le 04-07-2002 à 13:27:51

---------------
Protèges carnets personnalisés & accessoires pour bébé
n°171133
[SDF]Poire
Vive Grumly
Posté le 04-07-2002 à 13:44:09  profilanswer
 

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  :pt1cable: )


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°171136
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 04-07-2002 à 13:45:18  profilanswer
 

[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  :pt1cable: )




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 :D).
De toute façon j'ai initialisé à part dans une boucle module->ports->printed pour chaque port, et c'est pareil :/


Message édité par joce le 04-07-2002 à 13:46:57

---------------
Protèges carnets personnalisés & accessoires pour bébé
n°171138
[SDF]Poire
Vive Grumly
Posté le 04-07-2002 à 13:46:33  profilanswer
 

Oué...
Beh bonne chance  :D  
 :hello:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°171174
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 04-07-2002 à 14:16:50  profilanswer
 

Bon finalement j'ai fait :
 

Code :
  1. while(i<module->nport) {// module->nport c'est le nombre de port  
  2. port->printed = 0;
  3. util_add_pointer(&in_list,port, (int*) port);// rajout du port dans la liste de pointeur  
  4. port++;                                                       
  5. }


et c'est bon
m'enfin c'est zarbe...

n°171564
Musaran
Cerveaulté
Posté le 05-07-2002 à 02:21:23  profilanswer
 

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 :
  1. struct Truc{
  2. /*...*/
  3. } Truc0={0}; //Comme les tableaux, tous les membres à 0.
  4. int main(){
  5. Truc Var2;
  6. Var2=Truc0; //
  7. }


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°171576
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 05-07-2002 à 08:09:52  profilanswer
 

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:

Code :
  1. struct Truc{
  2. /*...*/
  3. } Truc0={0}; //Comme les tableaux, tous les membres à 0.
  4. int main(){
  5. Truc Var2;
  6. Var2=Truc0; //
  7. }






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.


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°172153
Profil sup​primé
Posté le 05-07-2002 à 20:52:04  answer
 

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

n°173899
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 09-07-2002 à 18:14:56  profilanswer
 

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 :na:


---------------
Protèges carnets personnalisés & accessoires pour bébé

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Purify de *****

 

Sujets relatifs
Plus de sujets relatifs à : Purify de *****


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)