Bonjour,
la machine : ia64 SuseLinux
J'ai compilé un code avec gcc sous environnement 64 bits.
Lors de l'execution j'ai le plantage suivantgcc -v :Configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --enable-languages=c,c++,f77,objc,java,ada --disable-checking --libdir=/usr/lib --enable-libgcj --with-gxx-include-dir=/usr/include/g++ --with-slibdir=/lib --with-system-zlib --enable-shared --enable-__cxa_atexit ia64-suse-linuxThread model: posix
gcc version 3.3.3 (SuSE Linux)
Après passage dans gdb, je vois que le plantage vient de la libraire : xvertex.5.0 routine rotate.c au niveau de l'utilisation de strcpy.forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image PC Routine Line Source
libc.so.6.1 2000000000C201F0 Unknown Unknown Unknown
Si dessous le bout de code de rotate.c qui plante :
Lors de la compilation de rotate.c j'ai le message suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 /**************************************************************************/ /* Routine to mimic `strdup()' (some machines don't have it) */ /**************************************************************************/ static char *my_strdup(str) char *str; { char *s; if(str==NULL) return NULL; s=(char *)malloc((unsigned)(sizeof(str)+1)); if(s!=NULL) strcpy(s, str); return s; }
correspondant à la ligne en bleu dans le bout de code au-dessus.rotated.c:168: warning: cast to pointer from integer of different size
Après un peu de recherche sur internet, ça pourrait provenir de la compilation en 64 bits qui laisse le entier en 32 bits et le pointeur en 64 bits. Mais bon, j'ai très peu de connaissance en C, malloc, pointeur.
Si quelqu'un aurait une idée de comment s'en sortir, ça serait très sympa.
Merci
Partager