Keine Core-Dumps nach den letzten Upgrades auf systemd?

12

Wenn ich ein Programm ausführe, an dem ich arbeite, schlägt dies mit der folgenden Meldung fehl:

...
Aborted (core dumped)

Es wird jedoch kein Core-Dump erstellt. Core-Dumps wurden bereits geschrieben, und ich kann mich nicht erinnern, dass ich irgendetwas daran geändert habe.

Wenn ich renne, ulimit -akomme ich zurück,

$ ulimit -a
core file size          (blocks, -c) unlimited
...

Andere Punkte,

  • Ich habe überprüft, ob mein Benutzer Dateien im aktuellen Verzeichnis erstellen kann.
  • Ich habe darüber gelesen /proc/sys/fs/suid_dumpable. Derzeit ist es auf meinem Computer auf 0 gesetzt. Ich habe versucht, es auf 1 oder 2 zu ändern, aber kein Unterschied.
  • Ich habe auch versucht, das Programm als root auszuführen, aber das hat auch keinen Unterschied gemacht.

Leider kann ich mich nicht erinnern, wann ich den letzten erfolgreichen Core-Dump produzieren konnte.

Philipp Claßen
quelle

Antworten:

8

Aus der Dokumentation auf coredump.conf,

Um eine vom Hersteller bereitgestellte Konfigurationsdatei zu deaktivieren, wird empfohlen, einen Symlink /dev/nullim Konfigurationsverzeichnis /etc/unter demselben Dateinamen wie die Konfigurationsdatei des Herstellers abzulegen.

sudo ln -s /dev/null /etc/sysctl.d/coredump.conf
sudo systemd-sysctl 

Seit systemd werden die Dinge anders verwaltet.

schaiba
quelle
Wow, du hast recht! Vor kurzem bin ich auf systemd umgestiegen. sudo systemd-coredumpctlzeigt alle fehlenden Core Dumps. Ihre Lösung funktionierte aber erst nach einem Systemneustart.
Philipp Claßen
1
systemd's wird systemd-sysctl.servicenur sysctlam richtigen Startpunkt ausgeführt und führt es bei Änderungen manuell erneut aus. Erstellen / überschreiben Sie Konfigurationsdateien nicht, ohne zu untersuchen, wofür sie bestimmt sind und welche Inhalte sie enthalten.
Vonbrand
1
Die Datei wurde anscheinend in umbenannt 50-coredump.conf, um die Einstellungen im aktuellen Systemstart zu übernehmen, musste ich die sysctl-Einstellung manuell ändern (siehe stackoverflow.com/q/2065912/427545) .
Lekensteyn
2
Um die Standardeinstellung wiederherzustellen, legen Sie keine leere Zeichenfolge fest. Verwenden Sie stattdessen sysctl -w kernel.core_pattern="core"
Folgendes
2

Sie können den coredumpctlBefehl verwenden, um entweder Ihren Core-Dump abzurufen oder gdb darauf auszuführen. Das ist die "systemd approved" Methode, um mit ihnen umzugehen. : - /

In gewissem Sinne ist es schön, dass systemd all diese Dinge aufzeichnet, weil es sie nach einiger Zeit automatisch löscht und das Hochladen von Absturzabbildern für Fehlerberichte vereinfacht.

Für Leute, die wussten, wie Coredumps funktionierten, bevor sich das System einmischte, war es eine schreckliche Veränderung mit wenig Hinweisen oder Hinweisen. Selbst das Löschen einer Datei mit dem Namen "core.pid.txt" mit Anweisungen zur Verwendung von coredumpctl zum Abrufen des Coredump sowie zum Deaktivieren der Erstellung der .txtDateien wäre eine große Hilfe gewesen, auch wenn diese Dateien ebenfalls verunreinigt gewesen wären Dateisystem für eine Weile.

Alleswissend
quelle