Unter Ubuntu (in meinem Fall 12.04) ist es möglich, dass "Segmentierungsfehler (Core Dumped)" gedruckt wird, aber keine Core-Datei erstellt wird, wo Sie eine erwarten könnten (zum Beispiel für ein lokal kompiliertes Programm).
Dies kann passieren, wenn Sie eine Kerndateigröße von 0 haben (Sie haben es noch nicht getan ulimit -c unlimited
) - dies ist die Standardeinstellung unter Ubuntu. Normalerweise würde dies das "(Core Dumped)" unterdrücken und Sie auf Ihren Fehler hinweisen, aber unter Ubuntu werden Corefiles über an Apport (Ubuntus Crash Reporting System) weitergeleitet /proc/sys/kernel/core_pattern
, und dies scheint die irreführende Meldung zu verursachen.
Wenn Apport feststellt, dass es sich bei dem fraglichen Programm nicht um ein Programm handelt, für das Abstürze gemeldet werden sollen (was Sie sehen können /var/log/apport.log
), wird das Standard-Kernelverhalten beim Einfügen einer Kerndatei in das cwd simuliert (dies erfolgt im Skript)/usr/share/apport/apport
). Dies beinhaltet die Ehrung von ulimit. In diesem Fall wird nichts unternommen. Aber (ich nehme an) was den Kernel betrifft, wurde eine Corefile generiert (und an Apport weitergeleitet), daher die Meldung "Segmentierungsfehler (Core Dumped)".
Letztendlich PEBKAC, weil ich vergessen hatte, ulimit zu setzen, aber die irreführende Nachricht ließ mich denken, dass ich für eine Weile verrückt wurde und mich fragte, was meine Corefiles fraß.
(Im Allgemeinen ist die Handbuchseite zum Kern (5) - man 5 core
- eine gute Referenz dafür, wo Ihre Kerndatei landet und warum sie möglicherweise nicht geschrieben wurde.)