core

Autres langues

Langue: fr

Version: 3 avril 2006 (mandriva - 01/05/08)

Section: 5 (Format de fichier)

NOM

core - Fichier core dump

DESCRIPTION

L'action par défaut de certains signaux est de forcer un processus à se terminer et de produire un fichier core dump, un fichier disque contenant une image de la mémoire du processus au moment où il s'est terminé. Une liste des signaux qui forcent un processus à créer un tel fichier se trouve dans la page signal(7).

Un processus peut définir sa limite de ressources logicielle RLIMIT_CORE pour établir une limite haute sur la taille du fichier core dump qu'il produirait s'il recevait un signal « core dump » ; voir getrlimit(2) pour les détails.

Il y a diverses circonstances dans lesquelles un fichier core dump n'est pas produit :

*
Le processus n'a pas la permission d'écrire le fichier core. (Par défaut, le fichier core est appelé core et est créé dans le répertoire de travail courant. Voir plus loin pour les détails de nommage du fichier.) L'écriture du fichier core échouera si le répertoire dans lequel il doit être créé n'est pas accessible en écriture, ou si un fichier du même nom existe déjà et n'est pas accessible en écriture ou si ce n'est pas un fichier régulier (par exemple, c'est un répertoire ou un lien symbolique).
*
Un fichier (régulier, accessible en écriture) avec le même nom qui serait utilisé pour le fichier core existe déjà, mais il y a plus d'un lien matériel vers ce fichier.
*
Le système de fichiers où le fichier core devrait être créé est plein ; ou n'a plus d'i-noeud ; ou est monté en lecture seule ; ou l'utilisateur a atteint son quota dans le système de fichiers.
*
Le répertoire dans lequel le fichier core dump doit être créé n'existe pas.
*
Le fichier core_pattern nomme un répertoire ou un fichier existant sur lequel on n'a pas la permission d'écriture.
*
Les limites de ressources RLIMIT_CORE ou RLIMIT_FSIZE pour un processus valent zéro (voir getrlimit(2)).
*
Le binaire devant être exécuté par le processus n'a pas la permission de lecture.
*
Le processus exécute un programme Set-UID (Set-GID) qui appartient à un utilisateur (groupe) autre que l'UID (GID) réel du processus. (Toutefois, voir la description de l'opération PR_SET_DUMPABLE de prctl(2), et la description du fichier /proc/sys/fs/suid_dumpable dans proc(5).)

Nommage des fichiers core dump

Par défaut, un fichier core dump est nommé core, mais le fichier /proc/sys/kernel/core_pattern (Depuis Linux 2.6 et 2.4.21) peut être configuré pour définir un modèle qui sera utilisé pour nommer les fichiers core dump. Le modèle peut contenir des spécificateurs qui seront substitués par les valeurs suivantes lors de la création d'un fichier core dump :
 
   %%  Le caractère %
   %p  PID du processus « dumpé »
   %u  UID réel du processus « dumpé »
   %g  GID réel du processus « dumpé »
   %s  Numéro du signal ayant provoqué le « dump »
   %t  Heure du « dump » (secondes depuis le 1er janvier 1970, 00H00)
   %h  Nom d'hôte (pareil que 'nodename' renvoyé par uname(2))
   %e  Nom du fichier exécutable
 
 
Un seul % à la fin du modèle est rejeté du nom du fichier core comme si c'était la combinaison d'un % suivi par n'importe quel caractère autre que ceux listés ci-dessus. Tous les autres caractères dans le modèle deviennent une partie littérale du nom de fichier core. Le modèle peut comporter des caractères « / » qui seront interprétés comme des délimiteurs de noms de répertoires. La taille maximum du nom de fichier core résultant est 64 octets. La valeur par défaut dans ce fichier est « core ». Pour rétrocompatibilité, si /proc/sys/kernel/core_pattern n'inclut pas « %p » et si /proc/sys/kernel/core_uses_pid (voir plus loin) n'est pas nul, .PID sera ajouté au nom du fichier core.

Depuis la version 2.4, Linux fournit également /proc/sys/kernel/core_pattern, une méthode plus primitive de contrôle du nom du fichier core dump. Si le fichier /proc/sys/kernel/core_uses_pid contient la valeur 0, le fichier core dump est simplement nommé core. Si ce fichier contient une valeur non nulle, le fichier core dump inclura le PID dans un nom de la forme core.PID.

NOTES

La commande gcore de gdb(1) peut être utilisée pour obtenir un fichier core dump d'un processus en cours d'exécution.

Si un processus multithread (ou, plus précisément, un processus qui partage sa mémoire avec un autre processus qui a été créé avec l'attribut CLONE_VM de clone(2)) créé un fichier core dump, le PID est toujours ajouté au nom du fichier core, à moins que le PID ne soit déjà inclus quelque part dans le nom de fichier via une spécification %p dans /proc/sys/kernel/core_pattern.

VOIR AUSSI

gdb(1), getrlimit(2), prctl(2), sigaction(2), elf(5), proc(5), signal(7)

TRADUCTION

Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 30 juillet 2006 et révisée le 19 novembre 2007.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 5 core ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.