Sasikiran Vaddi
Sasikiran Vaddi

Reputation: 2329

Process Core dumps are not created after crash

I have configured system configurations to create process core dumps.

Below are my configurations.

/etc/sysctl.conf
    kernel.core_uses_pid = 1
    kernel.core_pattern = /var/core/core.%e.%p.%h.%t
    fs.suid_dumpable = 2

/etc/security/limits.conf
    *               soft    core    unlimited
    root            soft    core    unlimited

Here are the steps which I am following to generate process coredumps.

1) I have restarted mysql service and executed command "kill -s SEGV <mysql_pid>" then I got the core dump file in /var/core location.

2) Then I have started my service mysql say "/etc/init.d/mysql start" or "service mysql start". Now if I give "kill -s SEGV <mysql_pid>" then core dump file is not getting created.

3) To get crash file again I have to restart the mysql service then only if I give "kill -s SEGV <mysql_pid>" i'm getting core dump file.

Can anyone please help me how to resolve this?

Upvotes: 0

Views: 2294

Answers (1)

BertD
BertD

Reputation: 628

First of all, you can verify that core dumps are disabled for the MySQL process by running:

# cat /proc/`pidof -s mysqld`/limits|egrep '(Limit|core)'
Limit                     Soft Limit           Hard Limit           Units
Max core file size        0                    unlimited            bytes

The "soft" limit is the one to look for, zero in this case means core dumps are disabled.

Limits set in /etc/security/limits.conf by default only apply to programs started interactively. You may have to include 'ulimit -c unlimited' in the mysqld startup script to enable coredumps permanently.

If you're lucky, then you can enable coredumps for your current shell and restart the daemon using its init.d script:

# ulimit -c unlimited
# /etc/init.d/mysql restart
 * Stopping MySQL database server mysqld               [ OK ] 
 * Starting MySQL database server mysqld               [ OK ] 
 * Checking for tables which need an upgrade, are corrupt
   or were not closed cleanly.
# cat /proc/`pidof -s mysqld`/limits|egrep '(Limit|core)'
Limit                     Soft Limit           Hard Limit           Units
Max core file size        unlimited            unlimited            bytes

As you can see, this works for MySQL on my system.

Please note that this won't work for applications like Apache, which call ulimit internally to disable core dumps, not for init.d script that use upstart.

Upvotes: 0

Related Questions