On Thu, Nov 3, 2011 at 7:48 AM, Peter Toft <[email protected]> wrote: > small twist to the code, then gcc -O2 -Wall finds nothing.... > > See the comment -> run as "code -1" > > #include <stdio.h> > #include <stdlib.h> > > > /* Save as code.c compile "gcc -Wall -O2 o code code.c" and run as "code > -1" */ > int main(int argc, char **argv) > { > int a[2],b[2],c[2],i; > > a[0] = 1; a[1] = 2; > b[0] = 3; b[1] = 4; > c[0] = 5; c[1] = 6; > > > printf("Dummy print .... %i\n",c[0]); > printf("argv[1] = %s\n",argv[1]); > i = atoi(argv[1]); > printf("index i = %i\n",i); > printf("%i %i\n",b[i],a[i]); > return 0; > }
I recently found a real bug like this with valgrind ( see http://bugs.winehq.org/show_bug.cgi?id=25826, in which the bug was caught because it ended up causing an overlapping memcpy ). So it's worth trying valgrind. And, luckily, Valgrind accidentally finds something to complain about here (though it doesn't point straight to the line in main() that causes it): $ gcc -Wall -g -O2 -o code code.c $ valgrind ./code -1 Dummy print .... 5 argv[1] = -1 index i = -1 Use of uninitialised value of size 4 at 0x4083B2B: _itoa_word (_itoa.c:195) by 0x4087E55: vfprintf (vfprintf.c:1619) by 0x412A054: __printf_chk (printf_chk.c:37) 2 68928292 - Dan ------------------------------------------------------------------------------ RSA(R) Conference 2012 Save $700 by Nov 18 Register now http://p.sf.net/sfu/rsa-sfdev2dev1 _______________________________________________ Valgrind-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/valgrind-users
