I recently upgraded a system to openSUSE 13.1. We're running a custom-built service on the system through xinetd, and in the old xinetd init script had the line ulimit -c unlimited
before starting xinetd to enable core dumps. Since openSUSE 13.1 uses systemd, this does not work anymore.
systemd-coredumpctl
does not find any core dumps even though there are kernel log messages that confirm the crashes. Starting the service manually from bash and then sending it SIGSEGV does create a core dump in the directory we configured. How do I get my core dumps back?
It turns out systemd supports setting limits in the configuration files, the information is just scattered throughout various man pages. According to systemd.exec, the limit for core dump creation / file size is set with LimitCORE. Additionally, it is possible to modify a unit / service configuration without having to modify the system-provided config file. More information in the ArchLinux Wiki. So creating the file (and parent directory)
/etc/systemd/system/xinetd.service.d/core.conf
with the following contentand then executing
activated the changes needed for creating core dumps.