Voici les instructions pas à pas qui vous guideront dans ce processus :
En supposant que vous obtenez quelque chose de ce genre:
$ clamscan --some-options some_file
Segmentation fault
La première chose à faire est de faire produire par le kernel un core dump. Pour un shell bourne-like (par ex. bash):
$ ulimit -c unlimited
Pour une shell C-like (par ex. tcsh):
> limit coredumpsize unlimited
Maintenant vous devriez apercevoir le message core dumped :
$ clamscan --some-options some_file
Segmentation fault (core dumped)
En regardant dans votre répertoire courant, vous devriez voir un fichier nommé core.
L'étape suivante est de charger le fichier core dans gdb:
$ gdb -core=core --args clamscan --some-options some_file
(gdb)
Vous devez maintenant voir le prompt gdb. Utilisez juste la commande bt au prompt pour obtenir de gdb l'affichage d'un backtrace complet.
Faites un Copier/Coller dans le rapport de bug. Vous pouvez utiliser la commande q pour quitter gdb.
* Backtrace de clamd:
Utilisez ps pour obtenir le PID de clamd (premier nombre à partir de la gauche):
$ ps -aux (or ps -elf on SysV)
clamav 24897 0.0 1.9 38032 10068 ? S Jan13 0:00 clamd
Attachez gdb au processus en fonctionnement:
$ gdb /usr/sbin/clamd 24897
Remplacez 24897 avec le pid de clamd et ajustez le chemin de clamd. Vous devez maintenant obtenir le prompt gdb, comme:
(gdb)
Si vous voulez que clamd continue de fonctionner, tant que la faute de segmentation n'arrive par exemple, tapez la commande gdb continue , et attendez l'erreur, qui à ce moment la retournera au prompt gdb.
bt fournira un backtrace de la thread courante.
The command info threads will tell you how many threads there are.
The command thread n will change to the specified thread, after which you can use the bt command again to get it's backtrace.
So, you basically want to do:
info threads pour obtenir le nombre de threads et leur numéro d'id
Pour chaque thread, entrez:
thread id_number
bt
Quittez gdb avec la commande quit. Répondez y (ou o selon la langue) à la question sur le programme encore en cours de fonctionnement.
* Strace: en option, si vous pensez que cela peut aider, la sortie de strace (pas expliquée ici).