Core dumps are one way to track down those segfaults which can’t easily be captured in gdb, either because they are rare and unpredictable, or they happen in some deeply nested subprocess. But no one likes core files being left all over the filesystem. Instead, capture your core dumps in a central directory and analyze them later at your pleasure.
Add this to
/etc/rc.local and also run it as a root:
mkdir -p /var/log/core
chmod 0777 /var/log/core
echo "/var/log/core/core.%t.%p.%e" > /proc/sys/kernel/core_pattern
echo 0 > /proc/sys/kernel/core_uses_pid
(By the way, ABRT also uses core_pattern so running these commands will disable ABRT, if you care).
You may need to adjust
* hard core unlimited
* soft core unlimited
On some versions of Fedora, also comment out this line from
/etc/profile. (What on earth was the thinking behind this?)
#ulimit -S -c 0 > /dev/null 2>&1
Check that core dumps are enabled. This is what you should see (you may need to log out and log in again):
$ ulimit -Hc
$ ulimit -Sc
Now, any time a process crashes, it will leave a core file in
$ ls -l /var/log/core/
-rw-------. 1 rjones rjones 303104 May 5 15:25 core.1273069556.28228.ls
$ gdb /bin/ls /var/log/core/core.1273069556.28228.ls
This doesn’t enable core dumps for all services, since anything started at boot goes down a different path. If you restart individual services by hand, then core dumps will be enabled for those.