There are my core dumps!
As noted
before,
with systemd
, your core dumps disappear into one of systemd
’s log
sinks, instead of being stored to the current directory. By now, they
are recoverable by normal users again.
TL;DR: Run coredumpctl gdb
to invoke gdb
with the most recent core dump.
Related bug about disappearing coredumps: https://bugs.freedesktop.org/show_bug.cgi?id=54288
Scenario: A simple program that crashes with a segfault:
~/dumpcore$ cat dumpcore.c
#include <unistd.h>
void dump_core() { int* boom = NULL; *boom = 2000; }
void its_time_to() { dump_core(); }
int main() { its_time_to(); }
~/dumpcore$ cc -g -o dumpcore dumpcore.c
~/dumpcore$ ./dumpcore
Segmentation fault (core dumped)
Core dumps get written to systemd
’s core dumps directory (see man coredumpctl
), and can be retrieved with the coredumpctl
tool:
~/dumpcore$ coredumpctl list
TIME PID UID GID SIG PRESENT EXE
...
Sun 2016-10-02 14:44:14 CEST 3857 1000 100 11 * /home/me/dumpcore/dumpcore
By default, coredumpctl
seems to use the most recent core dump,
so that you can easily inspect the most recent core dump with:
~/dumpcore$ coredumpctl gdb
PID: 3857 (dumpcore)
UID: 1000 (me)
GID: 100 (users)
Signal: 11 (SEGV)
Timestamp: Sun 2016-10-02 14:44:14 CEST (1min 3s ago)
Command Line: ./dumpcore
Executable: /home/me/dumpcore/dumpcore
Control Group: /user.slice/user-1000.slice/user@1000.service/gnome-terminal-server.service
Unit: user@1000.service
User Unit: user@1000.service
Slice: user-1000.slice
Owner UID: 1000 (me)
Boot ID: 73902fbce4e241f5bab007aad96895eb
Machine ID: 3ff4d30a94914397acd6af26eed15114
Hostname: limbo
Coredump: /var/lib/systemd/coredump/core.dumpcore.1000.73902fbce4e241f5bab007aad96895eb.3857.1475412254000000000000.lz4
Message: Process 3857 (dumpcore) of user 1000 dumped core.
Stack trace of thread 3857:
#0 0x00000000004004b6 dump_core (dumpcore)
#1 0x00000000004004cd its_time_to (dumpcore)
#2 0x00000000004004de main (dumpcore)
#3 0x00007f89ba351291 __libc_start_main (libc.so.6)
#4 0x00000000004003da _start (dumpcore)
GNU gdb (GDB) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /home/me/dumpcore/dumpcore...done.
[New LWP 3857]
warning: Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
Core was generated by `./dumpcore'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00000000004004b6 in dump_core () at dumpcore.c:2
2 void dump_core() { int* boom = NULL; *boom = 2000; }
(gdb) bt
#0 0x00000000004004b6 in dump_core () at dumpcore.c:2
#1 0x00000000004004cd in its_time_to () at dumpcore.c:3
#2 0x00000000004004de in main () at dumpcore.c:4
(gdb)