How to enable core dumps¶
In case of abnormal program termination, Cyrus automatically writes core dumps in the subdirectory cores in the configdirectory. However, for security reasons most Linux systems disable core dumps for processes that changed ownership, and Cyrus will silently abort the save attempt.
To make sure that core dumps are enabled for debugging, please:
Make sure that cores contain the PID of the process.
# echo 1 >/proc/sys/kernel/core_uses_pid
As a security feature, Linux won't generate cores for processes which have changed ownership. This prevents any of the Cyrus processes in your test ever dumping core, so you want to turn that feature off.
# echo 1 >/proc/sys/fs/suid_dumpable
Finally, some Linux systems might require to unlimit the size of core dumps.
# ulimit -c unlimited
Then you can fire up gdb:
gdb /usr/local/cyrus/lmtpd /tmp/core.XXX (use proper locations)
At the (gdb) prompt run the backtrace command (bt
).
Warning
These parameters are disabled for a reason and should only be used for debugging. We do not recommend to regularly enable setuid cores and unlimited core sizes on production systems.