Probleme d'optimisation de la part du compilateur ?
Bonsoir,
Il semblerait que l'une de mes variables soit modifié silencieusement, ce qui cause un bug du programme, du fait que cette variable soit un indice de tableau..
Je l'ai alors passé dans gdb, et j'obtiens ceci:
Citation:
(gdb) info breakpoints
Num Type Disp Enb Address What
1 breakpoint keep y 0x0000000000403a80 in read_chunked_data at transmission.c:276
(gdb) set follow-fork-mode child
(gdb) r
Breakpoint 1, read_chunked_data (sock=5, h=0x60b3c0) at transmission.c:276
276 int relus = 0;
Current language: auto
The current source language is "auto; currently c".
print i
$1 = 32767
(gdb) watch i
Hardware watchpoint 2: i
(gdb) c
Continuing.
Hardware watchpoint 2: i
Old value = 32767
New value = 0
read_chunked_data (sock=5, h=0x60b3c0) at transmission.c:322
(gdb) c
Continuing.
Hardware watchpoint 2: i
/* Optimisation de la part de gcc ? */
Old value = 0
New value = -1504369332
_wordcopy_fwd_aligned (dstp=<value optimized out>, srcp=<value optimized out>, len=8) at wordcopy.c:122
122 wordcopy.c: Aucun fichier ou dossier de ce type.
in wordcopy.c
/**************************************/
(gdb) c
Continuing.
Program received signal SIGSEGV, Segmentation fault.
0x0000000000403e67 in read_chunked_data (sock=5, h=0x60b3c0) at transmission.c:349
349 i++;
Je ne sais pas si un extrait de code pourrait être utile ici, les seules instructions concernant la variable i dans cette fonctions étant i = 0 et i++..
C'est la première fois que je croise ce genre de problème, je ne sais pas si c'est vraiment gcc qui agit mal ou si c'est moi qui ait fait une erreur quelque part :?