„coredumpctl“ kann den Core Dump nicht lesen und gibt die Meldung aus, dass die Datei nicht lesbar ist oder dass keine solche Datei bzw. kein solches Verzeichnis vorhanden ist?

„coredumpctl“ kann den Core Dump nicht lesen und gibt die Meldung aus, dass die Datei nicht lesbar ist oder dass keine solche Datei bzw. kein solches Verzeichnis vorhanden ist?

Ich gebe die folgenden Befehle ein:

coredumpctl list
Mon 2019-11-18 23:58:19 GMT   19043  1000  1000  31 missing   /opt/google/chrome/chrome
Mon 2019-11-18 23:58:19 GMT   19062  1000  1000  31 missing   /opt/google/chrome/chrome
Tue 2019-11-19 15:52:55 GMT   22332  1000  1000   6 missing   /usr/bin/texstudio

Gefolgt von:

coredumpctl gdb 22332
Storage: /var/lib/systemd/coredump/core.texstudio.1000.bb1cfb6b67f2423fac681d721ee1ba02.22332.1574178774000000.lz4 (inaccessible)
File "/var/lib/systemd/coredump/core.texstudio.1000.bb1cfb6b67f2423fac681d721ee1ba02.22332.1574178774000000.lz4" is not readable: No such file or directory

Dadurch wird der Stacktrace gelöscht und es werden die beiden oben genannten Meldungen ausgegeben, dass auf den Speicher nicht zugegriffen werden kann und die Datei nicht lesbar oder gefunden werden kann.

Mache ich etwas falsch?

Antwort1

Es gibt zwei Dinge, die Sie häufig falsch machen könnten.

Oft ist ein Core Dump „unzugänglich“, weil das Programm mit einer anderen Benutzer-ID als Ihrer ausgeführt wurde. Das bedeutet, dass Sie keine Berechtigung haben. Die schnelle Lösung besteht darin, das Programm coredumpctlals Root auszuführen, z. B. mit sudo coredumpctl.

Ich denke, das ist nicht Ihr Problem. Diese Coredumps stammen von der Benutzer-ID 1000. Ich vermute, Ihr Benutzer hat die ID 1000, da dies der erste (und wahrscheinlich einzige) Nicht-Root-Login ist, der auf Ihrem System erstellt wurde.

Zweitens,systemd-coredumphat einige Einstellungen incoredump.conf, wie viel Speicherplatz verwendet werden darf. Es sieht so aus, als ob bei weniger als 15 % freiem Speicherplatz überhaupt keine Core Dumps erstellt werden. (Sofern Sie diese Einstellung nicht ändern).

Sie können Ihren verfügbaren Speicherplatz mit dem Befehl df -hoder überprüfen df -h /var/lib/systemd/coredump/.

(Und um die gesamte absolute Größe anzuzeigen, die von Core Dumps verwendet wird, können Sie ausführen du -sh /var/lib/systemd/coredump/.)

MaxUse=, KeepFree=

Erzwingt Beschränkungen für den von extern gespeicherten Core Dumps belegten Speicherplatz. MaxUse= stellt sicher, dass alte Core Dumps gelöscht werden, sobald der von Core Dumps belegte Speicherplatz diese Grenze überschreitet (standardmäßig 10 % der gesamten Festplattengröße). KeepFree= steuert, wie viel Speicherplatz mindestens freigehalten werden soll (standardmäßig 15 % der gesamten Festplattengröße). Beachten Sie, dass der von Core Dumps belegte Speicherplatz diese Grenzen vorübergehend überschreiten kann, während Core Dumps verarbeitet werden. Beachten Sie, dass alte Core Dumps auch zeitabhängig über systemd-tmpfiles(8) gelöscht werden. Setzen Sie einen der Werte auf 0, um die größenbasierte Bereinigung auszuschalten.

Antwort2

Beachten Sie, dass auf jedem Dump coredumpctl liststeht missingund die letzte Fehlermeldung lautete No such file or directory.

Ich vermute, Ihre Distribution verfügt über einen regulären Cron-Job/Systemd-Timer, der alte Core-Dumps bereinigt (vielleicht wöchentlich?). Er hat die eigentlichen Core-Dump-Dateien bereinigt, und nur ein kleiner Protokolleintrag, der besagt, coredumpctldass ein solcher Dump früher einmal existierte, blieb übrig.

verwandte Informationen