, 2 min read
Location of core files in Arch Linux
Original post is here eklausmeier.goip.de/blog/2024/04-10-location-of-core-files-in-arch-linux.
In the old UNIX days the core
file was written where the offending program was started.
The only prerequisite was that there was no limit imposed.
Limits can be checked by
$ ulimit -a
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) unlimited
-m: resident set size (kbytes) unlimited
-u: processes 254204
-n: file descriptors 1024
-l: locked-in-memory size (kbytes) 8192
-v: address space (kbytes) unlimited
-x: file locks unlimited
-i: pending signals 254204
-q: bytes in POSIX msg queues 819200
-e: max nice 0
-r: max rt priority 0
-N 15: rt cpu time (microseconds) unlimited
The line for the "core file size" must be greater than zero.
In Arch Linux that alone doesn't help. core
files are written to this directory:
$ coredumpctl info
PID: 16354 (h2o)
UID: 33 (http)
GID: 33 (http)
Signal: 11 (SEGV)
Timestamp: Wed 2024-04-10 20:02:12 CEST (2h 3min ago)
Command Line: h2o
Executable: /usr/bin/h2o
Control Group: /user.slice/user-1000.slice/user@1000.service/tmux-spawn-3fc3de1b-6e2d-43bf-ad3d-bf55b4ce3a1a.scope
Unit: user@1000.service
User Unit: tmux-spawn-3fc3de1b-6e2d-43bf-ad3d-bf55b4ce3a1a.scope
Slice: user-1000.slice
Owner UID: 1000 (klm)
Boot ID: 8b9d5dcffc3a4669b0c7fa244db334be
Machine ID: 814e9c58b1e34999a682767020267eb0
Hostname: chieftec
Storage: /var/lib/systemd/coredump/core.h2o.33.8b9d5dcffc3a4669b0c7fa244db334be.16354.1712772132000000.zst (inaccessible)
Message: Process 16354 (h2o) of user 33 dumped core.
Stack trace of thread 16363:
#0 0x0000777802fe7bb3 n/a (libcrypto.so.53 + 0xd0bb3)
#1 0x00007778030efd5b SSL_CTX_flush_sessions (libssl.so.56 + 0x24d5b)
#2 0x00005d994cc02023 cache_cleanup_thread (h2o + 0x12a023)
#3 0x0000777802c7755a n/a (libc.so.6 + 0x8b55a)
#4 0x0000777802cf4a3c n/a (libc.so.6 + 0x108a3c)
The command coredumpctl list
enlists the core
's so far:
$ coredumpctl list
TIME PID UID GID SIG COREFILE EXE SIZE
Sat 2024-04-06 17:55:20 CEST 24746 33 33 SIGSEGV inaccessible /usr/bin/h2o -
Sat 2024-04-06 18:49:20 CEST 26982 33 33 SIGSEGV inaccessible /usr/bin/h2o -
Sat 2024-04-06 18:50:04 CEST 27178 33 33 SIGSEGV inaccessible /usr/bin/h2o -
You can start debugging with coredumpctl debug
. That will call gdb
.
The location and name of the core
file can be changed by tampering with
$ cat /proc/sys/kernel/core_pattern
|/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h
More information is here: Core dump file is not generated, coredumpctl, systemd-coredump.