Core dump présent sans backtrace

Un fichier core dump peut être présent sans qu’aucune pile d’appels (backtrace) ne soit visible immédiatement.

Un core dump contient uniquement l’état mémoire du processus au moment du crash. Pour obtenir une backtrace, il faut analyser ce dump avec un débogueur comme gdb.

Avec systemd, l’outil coredumpctl simplifie cette opération.


Pourquoi le core dump ne contient pas directement de backtrace

  • coredumpctl (composant de systemd) enregistre les dumps compressés au format .zst.
  • Le fichier est stocké sous :

/var/lib/systemd/coredump/
  • Le dump contient l’image mémoire du processus, mais pas l’analyse de la pile.
  • La backtrace est générée uniquement lorsqu’on ouvre le dump dans un débogueur.

Extraire immédiatement une backtrace

La commande suivante lance gdb automatiquement sur le dernier core dump du programme indiqué.

sudo coredumpctl debug /usr/bin/llama-server \
  --debugger-arguments="-batch -ex 'set pagination off' -ex 'info threads' -ex 'thread apply all bt full' -ex quit"

Signification des options

Élément Description
coredumpctl debug ouvre le dernier dump du programme
/usr/bin/llama-server binaire ayant généré le crash
-batch exécution non interactive
info threads liste les threads
thread apply all bt full backtrace complète de tous les threads
set pagination off désactive la pagination
quit quitte gdb après exécution

La sortie contient la pile d’appels complète et peut être copiée dans un rapport d’incident.


Archiver un core dump

Pour conserver le dump :

sudo coredumpctl --output=/root/core.llama-server.32514 dump /usr/bin/llama-server

Le fichier sera copié depuis le stockage systemd vers le chemin indiqué.

Si le fichier est compressé :

zstd -d file.zst -o file

Exporter la backtrace dans un fichier

sudo coredumpctl debug /usr/bin/llama-server \
  --debugger-arguments="-batch -ex 'set pagination off' -ex 'info threads' -ex 'thread apply all bt full' -ex quit" \
  | tee /tmp/llama-backtrace.txt

Récupérer le contexte du journal

Les logs précédant le crash peuvent aider à comprendre l’origine du problème.

sudo journalctl -u llama-server.service -b --no-pager -n 200

Options :

Option Description
-u service systemd
-b journal du boot courant
-n nombre de lignes
--no-pager sortie directe

Checklist minimale

  1. Vérifier la présence du dump dans /var/lib/systemd/coredump.
  2. Extraire la backtrace avec coredumpctl debug.
  3. Archiver le dump si nécessaire.
  4. Collecter les logs avec journalctl.
  5. joindre backtrace et logs au rapport d’incident.

Références