Sur Ubuntu récent (12.04 dans mon cas), il est possible d'imprimer "Erreur de segmentation (core dumped)", mais aucun fichier core produit là où vous pourriez vous en attendre (par exemple pour un programme compilé localement).
Cela peut se produire si vous avez une taille de fichier de base ulimit de 0 (vous ne l'avez pas fait ulimit -c unlimited
) - c'est la valeur par défaut sur Ubuntu. Normalement, cela supprimerait le "(core dumped)", vous informant de votre erreur, mais sur Ubuntu, les corefiles sont dirigés vers Apport (le système de rapport de crash d'Ubuntu) via /proc/sys/kernel/core_pattern
, et cela semble provoquer le message trompeur.
Si Apport découvre que le programme en question n'en fait pas partie, il devrait signaler des plantages (que vous pouvez voir se produire dans /var/log/apport.log
), il revient à simuler le comportement par défaut du noyau consistant à placer un fichier core dans le cwd (cela se fait dans le script /usr/share/apport/apport
). Cela inclut d'honorer ulimit, auquel cas il ne fait rien. Mais (je suppose) en ce qui concerne le noyau, un corefile a été généré (et canalisé pour répartir), d'où le message "Erreur de segmentation (core dumped)".
En fin de compte, PEBKAC pour avoir oublié de définir ulimit, mais le message trompeur m'a fait penser que je devenais fou pendant un moment, me demandant ce qui mangeait mes corefiles.
(De plus, en général, la page de manuel core (5) - man 5 core
- est une bonne référence pour savoir où se trouve votre fichier core et pourquoi il peut ne pas être écrit.)