Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

fclose() sur un fichier vide...

11 réponses
Avatar
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.

10 réponses

1 2
Avatar
Xavier Roche
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 ?

Avatar
JKB
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.


Avatar
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,

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.



Avatar
Charlie Gordon
"JKB" a écrit dans le message de news:

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




Avatar
JKB
Le 21-07-2007, à propos de
Re: fclose() sur un fichier vide...,
Charlie Gordon écrivait dans fr.comp.lang.c :
"JKB" a écrit dans le message de news:

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.





Avatar
Vincent Lefevre
Dans l'article ,
JKB écrit:

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 - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)

Avatar
JKB
Le 23-07-2007, à propos de
Re: fclose() sur un fichier vide...,
Vincent Lefevre écrivait dans fr.comp.lang.c :
Dans l'article ,
JKB écrit:

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.


Avatar
Charlie Gordon
"JKB" a écrit dans le message de news:

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.


Avatar
Vincent Lefevre
Dans l'article ,
JKB écrit:

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 - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)

Avatar
JKB
Le 23-07-2007, à propos de
Re: fclose() sur un fichier vide...,
Vincent Lefevre écrivait dans fr.comp.lang.c :
Dans l'article ,
JKB écrit:

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.


1 2