Bonsoir à tous,
J'espère que vous avez tous passé de bonnes fêtes de Noël
Pour ma part, j'ai un souci depuis quelques jours sur un programme C que je n'arrive pas à débugger! J'ai relus 15 fois le code, pas moyen de trouver l'erreur...
Le programme est question est un programme en C avec des threads, le programme lance 5 threads (gérés avec pthread).
Mon souci est, que de façon totalement aléatoire j'ai un segmentation default... Je n'ai accès qu'au débugger gdb, voici ce que me sort gdb :
Gdb me dit qu'il y a un souci avec la fonction strlen, mais il ne me donne aucune ligne précise dans mon code...Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 32771 (LWP 15104)]
0x401f9c7f in strlen () from /lib/libc.so.6
(gdb) backtrace
#0 0x401f9c7f in strlen () from /lib/libc.so.6
#1 0x08049448 in thread_groupe (id_groupe=0xbffe2624) at sourcethread.c:129
#2 0x40137e51 in pthread_start_thread () from /lib/libpthread.so.0
#3 0x40137ecf in pthread_start_thread_event () from /lib/libpthread.so.0
#4 0x4025b8aa in clone () from /lib/libc.so.6
Y a t-il un moyen de connaitre la ligne qui pose problème?
Et est-ce que cette fonction strlen qui pose problème aléatoirement peut-être située non pas dans mon programme, mais dans une fonction d'une API par exemple (je pense à la fonction mysql_query de l'API mysql)?
Et aussi comment pourrait planter la fonction strlen? En passant en argument une chaine de caractères sans le \0 ?
Merci d'avance pour vos réponses,
Romain
Partager