Sur une Ubuntu récente (12.04 dans mon cas), il est possible que le message "Segmentation fault (core dumped)" soit affiché, mais aucun fichier core n'est produit là où l'on pourrait s'y attendre (par exemple pour un programme compilé localement).
Cela peut se produire si vous avez un ulimit de taille de fichier de base de 0 (vous n'avez pas fait ulimit -c unlimited
) -- c'est la valeur par défaut sur Ubuntu. Normalement, cela devrait supprimer le "(core dumped)", vous indiquant votre erreur, mais sur Ubuntu, les corefiles sont envoyés à Apport (le système de rapport de crash d'Ubuntu) via /proc/sys/kernel/core_pattern
et cela semble être à l'origine du message trompeur.
Si Apport découvre que le programme en question n'est pas celui pour lequel il devrait signaler les plantages (ce que vous pouvez voir se produire en /var/log/apport.log
), il se rabat sur la simulation du comportement par défaut du noyau qui consiste à mettre un fichier de base dans le cwd (ceci est fait dans le script. /usr/share/apport/apport
). Cela inclut le respect de ulimit, auquel cas il ne fait rien. Mais (je suppose) qu'en ce qui concerne le noyau, un corefile a été généré (et envoyé à apport), d'où le message "Segmentation fault (core dumped)".
Finalement, PEBKAC a 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 même, 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 de base et les raisons pour lesquelles il pourrait ne pas être écrit).
1 votes
Le programme invoque-t-il chdir à un moment donné ? Si oui, regardez là.
2 votes
Le programme change-t-il son répertoire de travail ? Regardez là.
0 votes
Je chercherais un fichier récent sur tout le disque dur ;)
0 votes
Oui..le programme utilise chdir - je vais vérifier dans quelques secondes
1 votes
Oops non, il n'est pas là... Je l'ai vérifié ... programme chdir à /mnt et / j'ai vérifié les deux répertoires mais ne pouvait pas trouver le fichier. J'ai même trouvé / -name "*core." même cela ne m'a pas montré le fichier. Le programme utilise C + sqlite ,en insérant des valeurs il dumps core Il a dit assertion error==0 pour la première fois et error=101 pour la deuxième fois .
0 votes
Existe-t-il un moyen de rediriger le fichier core dumped vers un répertoire spécifique, par exemple /tmp ?
9 votes
Oui, si vous passez outre
/proc/sys/kernel/core_pattern
avec une chaîne de caractères commençant par/tmp
alors c'est là que vos vidanges de noyau iront.0 votes
Relié : [mes propres questions et réponses] Demandez à Ubuntu : Où puis-je trouver des fichiers core dump, et comment puis-je afficher et analyser le backtrace (trace de la pile) dans l'un d'eux ?