2

I am trying to enable core files on a machine running CentOS 6; however, nothing I have tried has produced core files…here is what I have done:

Added the following two lines to /etc/security/limits.conf:

*     hard    core    unlimited
*     soft    core    unlimited

Added the following line to /etc/sysconfig/init:

DAEMON_COREFILE_LIMIT='unlimited'

Added the following line to /etc/profile:

ulimit -c unlimited > /dev/null 2>&1

Added the following lines to /etc/sysctl.conf:

kernel.core_pattern = '/srv/core/%p_%t.core'
fs.suid_dumpable = 1

I made sure that /srv/core exists and has 777 permissions. The I executed init 6 to reboot the OS. Upon the system coming back up, I executed the following C script in an attempt to produce a core file:

#include <sys/types.h>
#include <unistd.h>
#include <signal.h>

int main(int argc, char **argv) {
  kill(getpid(), SIGQUIT);
}

It does not produce a core file :(

What am I missing or doing wrong? Thanks in advance for your help!

Kabb5
  • 121
  • 1
  • 5

2 Answers2

2

If your program is running as root, then the limits.conf entries you added would not apply. "*" applies to all users except for root.

If your program is running as root, add the following:

root     hard    core    unlimited
root     soft    core    unlimited

Also, ensure that SELinux is not preventing the writing of the core dump.

getenforce

If SELinux is running, verify that audit is running, try to get your core dump and then do:

grep -i denied /var/log/audit/auditd
Aaron
  • 2,859
  • 2
  • 12
  • 30
1

The problem probably is that the path is quoted for core_pattern. Try this instead:

kernel.core_pattern = /srv/core/%p_%t.core
Tobias
  • 11
  • 1