diff --git a/doc/20-development.md b/doc/20-development.md index a114c2c48..0bbbda37a 100644 --- a/doc/20-development.md +++ b/doc/20-development.md @@ -238,3 +238,71 @@ Breakpoint Example: m_Data = "/etc/icinga2/conf.d/satellite.conf"}, {static NPos = 18446744073709551615, m_Data = "/etc/icinga2/conf.d/services.conf"}, {static NPos = 18446744073709551615, m_Data = "/etc/icinga2/conf.d/templates.conf"}, {static NPos = 18446744073709551615, m_Data = "/etc/icinga2/conf.d/test.conf"}, {static NPos = 18446744073709551615, m_Data = "/etc/icinga2/conf.d/timeperiods.conf"}, {static NPos = 18446744073709551615, m_Data = "/etc/icinga2/conf.d/users.conf"}} + + +## Core Dump + +When the Icinga 2 daemon crashes with a `SIGSEGV` signal +a core dump file should be written. This will help +developers to analyze and fix the problem. + +### Core Dump File Size Limit + +This requires setting the core dump file size to `unlimited`. + +Example for Systemd: + + vim /usr/lib/systemd/system/icinga2.service + + [Service] + ... + LimitCORE=infinity + + systemctl daemon-reload + + systemctl restart icinga2 + +Example for init script: + + vim /etc/init.d/icinga2 + ... + ulimit -c unlimited + + service icinga2 restart + +Verify that the Icinga 2 process core file size limit is set to `unlimited`. + + cat /proc/`pidof icinga2`/limits + ... + Max core file size unlimited unlimited bytes + + +### Core Dump Kernel Format + +Adjust the coredump kernel format and file location. + + vim /etc/sysctl.conf + + kernel.core_pattern = /var/lib/cores/core.%e.%p + + sysctl -p + + mkdir /var/lib/cores + + +### Core Dump Analysis + +Once Icinga 2 crashes again a new coredump file will be written. Please +attach this file to your bug report in addition to the general details. + +Simple test case for a `SIGSEGV` simulation with `sleep`: + + ulimit -c unlimited + sleep 1800& + [1] + kill -SEGV + gdb `which sleep` /var/lib/cores/core.sleep. + (gdb) bt + rm /var/lib/cores/core.sleep.* + +