fclose() sur un fichier vide...

Le
JKB
Bonjour à tous,

J'observe un comportement qui me semble bizarre de fclose().
Lorsque j'ouvre un fichier vide (fopen("toto', "r");), le fclose()
sur ce fichier me renvoie un superbe :

*** glibc detected *** rpl: double free or corruption (!prev): 0x002f84b8 ***
Abandon (core dumped)

Est-ce normal, ou est-un bug du couple gcc 4.1/glibc 2.6 ?

Cordialement,

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Xavier Roche
Le #993900
J'observe un comportement qui me semble bizarre de fclose().
Lorsque j'ouvre un fichier vide (fopen("toto', "r");), le fclose()
sur ce fichier me renvoie un superbe :


Humm, peu probable. Cela ne viendrait pas plutôt d'une écriture après la
fin d'un bloc de mémoire ?

JKB
Le #992516
Le 20-07-2007, à propos de
Re: fclose() sur un fichier vide...,
Xavier Roche écrivait dans fr.comp.lang.c :
J'observe un comportement qui me semble bizarre de fclose().
Lorsque j'ouvre un fichier vide (fopen("toto', "r");), le fclose()
sur ce fichier me renvoie un superbe :


Humm, peu probable. Cela ne viendrait pas plutôt d'une écriture après la
fin d'un bloc de mémoire ?


Je ne vois pas trop où j'ai fait une telle erreur dans ce code...
Enfin, je vais revérifier une n-ième fois...

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.


JKB
Le #992515
Le 20-07-2007, à propos de
Re: fclose() sur un fichier vide...,
JKB écrivait dans fr.comp.lang.c :
Le 20-07-2007, à propos de
Re: fclose() sur un fichier vide...,
Xavier Roche écrivait dans fr.comp.lang.c :
J'observe un comportement qui me semble bizarre de fclose().
Lorsque j'ouvre un fichier vide (fopen("toto', "r");), le fclose()
sur ce fichier me renvoie un superbe :


Humm, peu probable. Cela ne viendrait pas plutôt d'une écriture après la
fin d'un bloc de mémoire ?


Je ne vois pas trop où j'ai fait une telle erreur dans ce code...
Enfin, je vais revérifier une n-ième fois...


Groumpfff... J'ai honte... Lorsque mon fichier était vide,
j'écrivais dans chaine[-1] ! Pourtant, ça fait trois jour que je
suis sur vingt lignes de code !

Désolé pour le dérangement,

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.



Charlie Gordon
Le #992512
"JKB"
Le 20-07-2007, à propos de
Re: fclose() sur un fichier vide...,
JKB écrivait dans fr.comp.lang.c :
Le 20-07-2007, à propos de
Re: fclose() sur un fichier vide...,
Xavier Roche écrivait dans fr.comp.lang.c :
J'observe un comportement qui me semble bizarre de fclose().
Lorsque j'ouvre un fichier vide (fopen("toto', "r");), le fclose()
sur ce fichier me renvoie un superbe :


Humm, peu probable. Cela ne viendrait pas plutôt d'une écriture après la
fin d'un bloc de mémoire ?


Je ne vois pas trop où j'ai fait une telle erreur dans ce code...
Enfin, je vais revérifier une n-ième fois...


Groumpfff... J'ai honte... Lorsque mon fichier était vide,
j'écrivais dans chaine[-1] ! Pourtant, ça fait trois jour que je
suis sur vingt lignes de code !

Désolé pour le dérangement,


la prochaine fois, aie le réflexe valgrind !

Chqrlie




JKB
Le #992511
Le 21-07-2007, à propos de
Re: fclose() sur un fichier vide...,
Charlie Gordon écrivait dans fr.comp.lang.c :
"JKB"
Le 20-07-2007, à propos de
Re: fclose() sur un fichier vide...,
JKB écrivait dans fr.comp.lang.c :
Le 20-07-2007, à propos de
Re: fclose() sur un fichier vide...,
Xavier Roche écrivait dans fr.comp.lang.c :
J'observe un comportement qui me semble bizarre de fclose().
Lorsque j'ouvre un fichier vide (fopen("toto', "r");), le fclose()
sur ce fichier me renvoie un superbe :


Humm, peu probable. Cela ne viendrait pas plutôt d'une écriture après la
fin d'un bloc de mémoire ?


Je ne vois pas trop où j'ai fait une telle erreur dans ce code...
Enfin, je vais revérifier une n-ième fois...


Groumpfff... J'ai honte... Lorsque mon fichier était vide,
j'écrivais dans chaine[-1] ! Pourtant, ça fait trois jour que je
suis sur vingt lignes de code !

Désolé pour le dérangement,


la prochaine fois, aie le réflexe valgrind !


Il n'y a pas que les i386 dans la vie. Sous sparc, je n'ai pas
encore vu de valgrind.

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.





Vincent Lefevre
Le #993899
Dans l'article JKB
Il n'y a pas que les i386 dans la vie. Sous sparc, je n'ai pas
encore vu de valgrind.


Pas possible de tester sur i386 (si c'est du C standard et portable)?

--
Vincent Lefèvre 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)

JKB
Le #993898
Le 23-07-2007, à propos de
Re: fclose() sur un fichier vide...,
Vincent Lefevre écrivait dans fr.comp.lang.c :
Dans l'article JKB
Il n'y a pas que les i386 dans la vie. Sous sparc, je n'ai pas
encore vu de valgrind.


Pas possible de tester sur i386 (si c'est du C standard et portable)?


C'est du C standard, mais je n'ai pas de i386 sous la main (je sais,
ça semble bizarre...) et je débuggue à la main avec MALLOC_CHECK_,
ddd et electrical fence.

Cordialement,

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.


Charlie Gordon
Le #993897
"JKB"
Le 21-07-2007, à propos de
Re: fclose() sur un fichier vide...,
Charlie Gordon écrivait dans fr.comp.lang.c :
...

la prochaine fois, aie le réflexe valgrind !


Il n'y a pas que les i386 dans la vie. Sous sparc, je n'ai pas
encore vu de valgrind.


Too bad. valgrind ne supporte que Linux sur X86, AMD86, PPC32 et PPC64.
C'est quand meme un super outil qui aurait identifié ton problème en
quelques secondes.
Je suppose que tes sparc tournent sous Solaris... Si ton code est portable
et n'interagit avec le reste du système que par des interfaces Posix, tu
peux toujours cross compiler sous Linux, voire sous cygwin. Masser le code
sous différents environnements fait souvent ressortir des bugs sournois.

Chqrlie.


Vincent Lefevre
Le #993740
Dans l'article JKB
C'est du C standard, mais je n'ai pas de i386 sous la main


C'est pourtant facile d'en avoir un: http://www.testdrive.hp.com/

--
Vincent Lefèvre 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)

JKB
Le #993739
Le 23-07-2007, à propos de
Re: fclose() sur un fichier vide...,
Vincent Lefevre écrivait dans fr.comp.lang.c :
Dans l'article JKB
C'est du C standard, mais je n'ai pas de i386 sous la main


C'est pourtant facile d'en avoir un: http://www.testdrive.hp.com/


Intéressant, je ne connaissais pas. Maintenant, j'ai des sources
de taille monstrueuse ;-)

fermat:[~/gopher/rpl2/rpl-4.0.0.prerelease.1] > du -hs
193M .

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.


Publicité
Poster une réponse
Anonyme