C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

STL & Dangling pointer

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
amerio
Guest





PostPosted: Mon Sep 22, 2003 6:05 pm    Post subject: STL & Dangling pointer Reply with quote



Bonjour,
Dans un gros projet ou on utilise std::vector et std::list, avec VC6+sp5, BoundsChecker 6
trouve une quantité assez importante de "dangling pointer" à l'intérieur du source de
vector et list. Je sais ce qu'est un dangling pointer (et ses risques), mais jusquà
présent, j'ai toujours considéré qu'il s'agissait de fausses alertes de BC6 dans la STL.
Donc, 1ère question : sont-ce bien là des fausses alertes ? ou bien...
Et 2ème question, si ce n'en est pas, comment faire ?
Question subsidiaire : on a un (gros) patch mémoire qui traine, introuvable par BC6.
Connaitriez-vous un autre outils (à part BC7...)


Back to top
David Brabant
Guest





PostPosted: Tue Sep 23, 2003 8:22 am    Post subject: Re: STL & Dangling pointer Reply with quote



"amerio" <amerio (AT) hotmail (DOT) com> wrote

Quote:
Dans un gros projet ou on utilise std::vector et std::list, avec VC6+sp5, BoundsChecker 6
trouve une quantité assez importante de "dangling pointer" à l'intérieur du source de
vector et list. Je sais ce qu'est un dangling pointer (et ses risques), mais jusquà
présent, j'ai toujours considéré qu'il s'agissait de fausses alertes de BC6 dans la STL.
Donc, 1ère question : sont-ce bien là des fausses alertes ? ou bien...
Et 2ème question, si ce n'en est pas, comment faire ?
Question subsidiaire : on a un (gros) patch mémoire qui traine, introuvable par BC6.
Connaitriez-vous un autre outils (à part BC7...)

http://frontline.compuware.com/nashua/kb/doc/943.asp

--
David



Back to top
amerio
Guest





PostPosted: Tue Sep 23, 2003 9:05 am    Post subject: Re: STL & Dangling pointer Reply with quote



David Brabant wrote:
Quote:
"amerio" <amerio (AT) hotmail (DOT) com> wrote

Dans un gros projet ou on utilise std::vector et std::list, avec VC6+sp5,
BoundsChecker 6 trouve une quantité assez importante de "dangling pointer" à
l'intérieur du source de vector et list. Je sais ce qu'est un dangling
pointer (et ses risques), mais jusquà présent, j'ai toujours considéré qu'il
s'agissait de fausses alertes de BC6 dans la STL. Donc, 1ère question :
sont-ce bien là des fausses alertes ? ou bien...
Et 2ème question, si ce n'en est pas, comment faire ?
Question subsidiaire : on a un (gros) patch mémoire qui traine, introuvable
par BC6. Connaitriez-vous un autre outils (à part BC7...)

http://frontline.compuware.com/nashua/kb/doc/943.asp

Merci pour le lien ! c'est exactement notre cas de "Dangling Pointer" !!
Donc ouf, pas de pb dans notre code de ce coté là.



Back to top
amerio
Guest





PostPosted: Tue Sep 23, 2003 9:07 am    Post subject: Re: STL & Dangling pointer Reply with quote

Quote:
Dans un gros projet ou on utilise std::vector et std::list, avec VC6+sp5,
BoundsChecker 6 trouve une quantité assez importante de "dangling pointer" à
l'intérieur du source de vector et list. Je sais ce qu'est un dangling
pointer (et ses risques), mais jusquà présent, j'ai toujours considéré qu'il
s'agissait de fausses alertes de BC6 dans la STL. Donc, 1ère question :
sont-ce bien là des fausses alertes ? ou bien...

A ma connaissance, il n'y a pas de fuites de mémoire dans vector ou
string de vc6 avec le SP5. Ceci dit, si tu stockes des pointeurs vers
de la mémoire allouée dynamiquement dans tes containers, c'est à toi
de libérer la mémoire en question.
En ce qui concerne les "dangling pointers", il y en a peut-être dans
l'implémentation interne de la STL, mais tant qu'ils ne sont pas
déréférencés par le code de la STL et que tu n'y a pas accès, tu ne
dvrais pas t'en soucier.
Et 2ème question, si ce n'en est pas, comment faire ?
Ce sont des pointeurs accessibles depuis le code utilsiateur? Si non,
ce n'est pas ton problème.

(cf reponse de D.Brabant)
Il s'agit bien de dangling pointer, mais ils ne sont pas déréférencés, donc aucun soucis.


Quote:
Question subsidiaire : on a un (gros) patch mémoire qui traine, introuvable
par BC6.
Un "patch mémoire" ? Tu veux dire une fuite? Comment sais-tu que tu as
une fuite (quels symptomes) si BC ne la trouve pas?

Un patch, pas un leak (ou fuite). On n'a aucune fuite de mémoire dans notre code.
Par contre, quelque part, un bout de code écrit par dessus un autre objet.
Parfois, ca écrase la pile d'appel, parfois ca se traduit par un overrun (mais jamais au
même endroit, donc on arrive pas à identifier le coupable, et ca ressemble plus à un
symptome qu'a la vraie cause), et parfois, ca écrit au beau milieu d'un objet, donc sans
faire d'exeption sur le coup, on ne s'en rend compte qu'au moment du plantage, bcp plus
tard)
Et BC6 ne voit rien.

Cela fait maintenant plusieurs semaines qu'on cherche, et on envisage d'aller élever des
moutons...
Donc, a vot' bon coueur pour les idées...



Back to top
Loïc Joly
Guest





PostPosted: Tue Sep 23, 2003 8:28 pm    Post subject: Re: STL & Dangling pointer Reply with quote

amerio wrote:

Quote:
Dans un gros projet ou on utilise std::vector et std::list, avec VC6+sp5,
BoundsChecker 6 trouve une quantité assez importante de "dangling pointer" à
l'intérieur du source de vector et list. Je sais ce qu'est un dangling
pointer (et ses risques), mais jusquà présent, j'ai toujours considéré qu'il
s'agissait de fausses alertes de BC6 dans la STL. Donc, 1ère question :
sont-ce bien là des fausses alertes ? ou bien...

A ma connaissance, il n'y a pas de fuites de mémoire dans vector ou
string de vc6 avec le SP5. Ceci dit, si tu stockes des pointeurs vers
de la mémoire allouée dynamiquement dans tes containers, c'est à toi
de libérer la mémoire en question.
En ce qui concerne les "dangling pointers", il y en a peut-être dans
l'implémentation interne de la STL, mais tant qu'ils ne sont pas
déréférencés par le code de la STL et que tu n'y a pas accès, tu ne
dvrais pas t'en soucier.

Et 2ème question, si ce n'en est pas, comment faire ?

Ce sont des pointeurs accessibles depuis le code utilsiateur? Si non,
ce n'est pas ton problème.


(cf reponse de D.Brabant)
Il s'agit bien de dangling pointer, mais ils ne sont pas déréférencés, donc aucun soucis.



Question subsidiaire : on a un (gros) patch mémoire qui traine, introuvable
par BC6.

Un "patch mémoire" ? Tu veux dire une fuite? Comment sais-tu que tu as
une fuite (quels symptomes) si BC ne la trouve pas?


Un patch, pas un leak (ou fuite). On n'a aucune fuite de mémoire dans notre code.
Par contre, quelque part, un bout de code écrit par dessus un autre objet.
Parfois, ca écrase la pile d'appel, parfois ca se traduit par un overrun (mais jamais au
même endroit, donc on arrive pas à identifier le coupable, et ca ressemble plus à un
symptome qu'a la vraie cause), et parfois, ca écrit au beau milieu d'un objet, donc sans
faire d'exeption sur le coup, on ne s'en rend compte qu'au moment du plantage, bcp plus
tard)

J'avais lu une technique dans un C/C++ user journal, qui peut peut-être
s'appliquer dans ce cas :

Les OS fournissent en général (et windows le fait) des fonctions qui
permettent de mettre un bout de mémoire en lecture seule. Donc, ton
objet qui est écrasé, tu le protèges sauf dans ses setter ou fcts membre
non const, et avec un peu de chance, tu verras une belle erreur dans le
code qui écrase, et non plus dans le code écrasé.

Autrement, une des meilleures méthodes que je connais pour ça est la
revue de code.

--
Loïc




Back to top
amerio
Guest





PostPosted: Wed Sep 24, 2003 9:19 am    Post subject: Re: STL & Dangling pointer Reply with quote

Quote:
Un patch, pas un leak (ou fuite). On n'a aucune fuite de mémoire dans notre
code.
Par contre, quelque part, un bout de code écrit par dessus un autre objet.
Parfois, ca écrase la pile d'appel, parfois ca se traduit par un overrun
(mais jamais au même endroit, donc on arrive pas à identifier le coupable,
et ca ressemble plus à un symptome qu'a la vraie cause), et parfois, ca
écrit au beau milieu d'un objet, donc sans faire d'exeption sur le coup, on
ne s'en rend compte qu'au moment du plantage, bcp plus tard)

J'avais lu une technique dans un C/C++ user journal, qui peut peut-être
s'appliquer dans ce cas :

Les OS fournissent en général (et windows le fait) des fonctions qui
permettent de mettre un bout de mémoire en lecture seule. Donc, ton
objet qui est écrasé, tu le protèges sauf dans ses setter ou fcts membre
non const, et avec un peu de chance, tu verras une belle erreur dans le
code qui écrase, et non plus dans le code écrasé.

Tu aurais des indic plus precises là dessus ?

Quote:
Autrement, une des meilleures méthodes que je connais pour ça est la
revue de code.
Oui, le pb est que l'on est (presque) sur que ce pb vient d'une lib tierce partie.

On voudrait pouvoir confirmer, pour leur taper dessus Wink.



Back to top
mourad
Guest





PostPosted: Wed Sep 24, 2003 3:01 pm    Post subject: Re: STL & Dangling pointer Reply with quote

Bojour à tous,
Quote:
http://frontline.compuware.com/nashua/kb/doc/943.asp

Merci pour le lien ! c'est exactement notre cas de "Dangling Pointer" !!


j'ai suivi la descution de prés, mais je suis un peu perdu. Finalement
c'est une erreur au niveau stl ou pas;
car si j'ai bien compris dans lien, ils disentau debut que
BoundsChecker n'a pas tort de reporter cette erreur, et que le le prog
de stl n'est faux. A la fin il disent c'est plus prudent de corriger
l'erreur.J'avoue que je suis un peu perdu.
merci d'avance.
Quote:
Donc ouf, pas de pb dans notre code de ce coté là.
Donc c'est au niveau stl?


Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.