Absturz ohne Core Dump

1215
why.n0t

Vor allem: Ich habe Core Dumps aktiviert und sie funktionieren meistens.

Ein Programm stürzt also ab und zu ab und erzeugt einen Core-Dump. Aber manchmal stürzt es auch ohne Core Dump ab. Was sehr frustrierend ist.

Gibt es Abstürze, die so schwer sind, dass sie keinen Kernspeicherabzug verursachen?

1

1 Antwort auf die Frage

0
MariusMatutiae

Es gibt eine kleine Anzahl von Gründen für einen Absturz, der keinen Core-Dump erzeugt. Der erste, von dem ich denke, dass er nicht auf Sie zutrifft

1) ulimit wurde nicht auf unbegrenzt festgelegt : Sie sollten ausgeben

 ulimit -c unlimited 

2) Es ist nicht genügend Speicherplatz vorhanden, oder Sie dürfen nicht in das Verzeichnis schreiben, aus dem Sie den Befehl ausgegeben haben, der abstürzt, oder Sie überschreiben möglicherweise eine vorhandene Datei.

3) Für das Programm ist ein Programm setxid erforderlich. In diesem Fall werden Daten aus Sicherheitsgründen nicht gespeichert. Der Speicherauszug enthält möglicherweise vertrauliche Daten, die unbefugten Benutzern zur Verfügung gestellt werden könnten. Um dies zu umgehen, geben Sie als sudo

 echo 2 >/proc/sys/fs/suid_dumpable 

Bitte beachten Sie das ungewöhnliche Flag. 2 : 1 bedeutet, dass alle Sicherheitsfunktionen verworfen werden, um das Debugging-System als Ganzes zuzulassen . 2 ist stärker eingeschränkt.

Wenn Sie Zugriff auf den Code haben, können Sie versuchen, Setrlimit im Code zu aktivieren, oder prctl (PR_SET_DUMPABLE, 1) aufrufen .

Danke für Ihre schnelle Antwort. Mein ulimit ist unbegrenzt. Meine Quote ist noch nicht erreicht, ich habe noch 100 GByte übrig, während das Programm ungefähr 3 Gbit / s für alles benötigt, die eigentliche Festplatte ist bei weitem nicht voll. Und wie ich schrieb, schreiben die meisten dieser Programme einen Core-Dump. why.n0t vor 10 Jahren 0
@Alex Lassen Sie mich umformulieren: Ein Core-Dump liefert Ihnen ein Bild des gesamten Speichers. Wenn setuid in Ihrem Programm ausgeführt wird, haben Sie durch das Auflegen der Hände auf den Kern Zugriff auf Informationen erhalten, zu denen Sie als normaler Benutzer nicht vertraulich sein dürfen. Es kann passieren, dass das Programm setuid nicht ausgeführt wird, wenn der Core gesichert wird, und andernfalls, wenn der Core gesichert wird. Viele unschuldig aussehende Befehle wie * ping * führen setuid aus. Kannst du ausschließen, dass dein Programm niemals setuid-Programme / -Befehle / ausführt? MariusMatutiae vor 10 Jahren 0
Ich kann es nicht ausschließen. Aber ich habe den Prozess schon einige Zeit mit top überwacht und die realUID und UID ändern sich nicht. why.n0t vor 10 Jahren 0