Bonjour,

Je travaille sous linux RedHat 4.
Mon application C / X11 /Motif plante avec un segmentation fault.
Avec valgrind j'arrive à avoir le renseignement suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
==28478== Invalid write of size 4
==28478==    at 0x804E041: put_the_data (exp_hmi_excel.c:396)
==28450==    by 0x3A: ???
==28450==  Address 0xBEEDAE44 is just below the stack ptr.  To suppress, use: --workaround-gcc296-bugs=yes
Cette ligne corresponds à un "return FALSE" dans une procédure appelée par un "XtAppAddWorkProc"; ce return permet de redonner la main à la boucle X. Autrement dit la référence à cette ligne est inexploitable.

Je n'avais pas de fichier core, en cherchant, j'ai trouvé que la commande ulimit permet de définir la taille du fichier. Cette commande ne marche pas en csh. Je suis passé en bash et ai défini une taille non nulle pour mon fichier core.
Une fois le fichier core généré, j'ai fait :
gdb ./<executable> ./<core file>
et j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/tls/libthread_db.so.1".
 
Core was generated by `'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/lib/valgrind/x86-linux/vgpreload_core.so...done.
Loaded symbols for /usr/lib/valgrind/x86-linux/vgpreload_core.so
Reading symbols from /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so...done.
Loaded symbols for /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so
Reading symbols from /oracle/oracle10/lib/libclntsh.so.10.1...done.
Loaded symbols for /oracle/oracle10/lib/libclntsh.so.10.1
Loaded symbols for /usr/X11R6/lib/X11/locale/lib/common/ximcp.so.2
Reading symbols from /lib/libnss_files.so.2...done.
Loaded symbols for /lib/libnss_files.so.2
#0  0x0000000a in ?? ()
Donc aucune référence à un de mes fichiers sources !

Coment puis je avancer ?

Merci de votre aide