]> git.ipfire.org Git - thirdparty/systemd.git/commit - src/coredump/coredump.c
coredump: rework coredumping logic
authorLennart Poettering <lennart@poettering.net>
Mon, 8 Feb 2016 20:16:08 +0000 (21:16 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 10 Feb 2016 15:08:32 +0000 (16:08 +0100)
commit3c171f0b1ec3ce1b98777cca7330727b9ebfd17d
treeb03ca98c30a08bb6fa4086012ad760aaabe528aa
parenteef0a274e6187d1efb8fffaf66db94b8738662a0
coredump: rework coredumping logic

This reworks the coredumping logic so that the coredump handler invoked from the kernel only collects runtime data
about the crashed process, and then submits it for processing to a socket-activate coredump service, which extracts a
stacktrace and writes the coredump to disk.

This has a number of benefits: the disk IO and stack trace generation may take a substantial amount of resources, and
hence should better be managed by PID 1, so that resource management applies. This patch uses RuntimeMaxSec=, Nice=, OOMScoreAdjust=
and various sandboxing settings to ensure that the coredump handler doesn't take away unbounded resources from normally
priorized processes.

This logic is also nice since this makes sure the coredump processing and storage is delayed correctly until
/var/systemd/coredump is mounted and writable.

Fixes: #2286
Makefile.am
src/basic/socket-util.c
src/coredump/coredump.c
units/.gitignore
units/systemd-coredump.socket [new file with mode: 0644]
units/systemd-coredump@.service.in [new file with mode: 0644]