Bonjour,

la machine : ia64 SuseLinux

J'ai compilé un code avec gcc sous environnement 64 bits.
gcc -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)
Lors de l'execution j'ai le plantage suivant
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image PC Routine Line Source
libc.so.6.1 2000000000C201F0 Unknown Unknown Unknown
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.

Si dessous le bout de code de rotate.c qui plante :
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;
}
Lors de la compilation de rotate.c j'ai le message suivant :
rotated.c:168: warning: cast to pointer from integer of different size
correspondant à la ligne en bleu dans le bout de code au-dessus.

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