Configuring Core Dumps
Checking Core Dump Permission
On most Unix/Linux systems, the creation of core dumps by non-admin/root users is disabled.
Core file creation is controlled by the ulimit command. A few things to note about ulimit are:
Default ulimit settings are default shell profiles and/or the /etc/security/limits.conf file (depending on the system).
Any change to a ulimit setting during a login session are valid only for the login session and will not apply to new or parallel sessions. Permanent changes must be made to the user/global login profile or limits.conf file.
There are two types of limits: soft and hard. Soft limits are the maximum ulimit values that may be set for a user. Hard limits are the maximum ulimit values allowed system-wide and cannot be overridden by the user.
When the ulimit command is used, the limits that are listed or set are for that login process only. Ulimit cannot be used to list or update the limits for other system/user processes.
In the following example, the ulimit command is used to check the hard and soft limits for core files:
Checking Soft & Hard Ulimits for Core Files
This checks the soft limit of a core file size
userHome: ~> ulimit -Sc
0
This checks the hard limit of a core file size
userHome: ~> ulimit -Hc
unlimited
There are three values that may be used for the core file setting in ulimit:
- Value
- Function
- 0 Setting the value to zero disables the creation of core files
- N Setting the value to any number above zero will be the maximum size in blocks. Core files that are greater than N blocks will be truncated which renders the core file useless for troubleshooting.
- unlimited There are no restrictions to the size of the core file. The full core file will be created, however, if the size of the core file is greater than the amount of available disk space, the filesystem may be filled causing further issues.
Enabling Core Dumps
Disk Space Warning
Depending on the size of the LDAP database, core dumps can be extremely large. Before enabling core dumps, make sure that your server has enough disk space to accommodate the core file.
RHEL 6+ and CentOS 6+ Users
Core files may be handled differently in RHEL & CentOS 6+ by the abrtd daemon, which causes core dumps to be automatically deleted. See Preventing Core Dump Deletion for more information and instructions.
In order for core dumps to be taken, the ulimit core size needs to be set to “unlimited” before slapd is started. The best way to do this is to add the ulimit command to the start of your /opt/symas/etc/openldap/symas-openldap.conf file:
Enabling Cores in symas-openldap.conf
Symas OpenLDAP Configuration file
Copyright (c) 2015 Symas Corporation. All Rights Reserved.
This file contains configuration information for Symas OpenLDAP.
Refer to the comments just before each variable to determine proper
settings.
Set ulimit to allow core dumps
ulimit -c unlimited
RUN_SLAPD - Control the ldap server daemon.
A value of Y will cause the ldap server daemon to be started.
Any other value will prevent it from being started.
RUN_SLAPD=Y
Creating Core Dumps in Linux
CREATE A CORE DUMP WITH KILLING slapd
If the process is still running and you need to kill it, send the slapd process a SIGQUIT signal:
Core Dump With kill
Get the slapd process ID
user@host> ps -C slapd
PID TTY TIME CMD
23348 ? 15:35:33 slapd
Kill the process with a SIGQUIT signal
user@host> kill -3 23348
After you kill the process, there should be a file with the name “core” in it in your current working directory.
CREATE A CORE DUMP WITHOUT KILLING slapd
If you need a core dump but don’t want or need to kill slapd, you can obtain the core dump by using the gcore utility. This will create a core without disturbing the slapd process. The gcore utility is not installed by default on some systems.
To obtain a core with gore, get the process id of slapd, then call gcore:
Core Dump With gcore
Get the slapd process ID
user@host> ps -C slapd
PID TTY TIME CMD
23348 ? 15:35:33 slapd
Run gcore with the slapd process id
user@host> gcore 23348
The resulting core file should be in your current working directory and should have the id of the process that was dumped in the filename
Preventing Core Dump Deletion
After a slapd crash, the core dump generated is deleted automatically by abrtd on RHEL 6+, CentOS6+
The OpenGPGCheck setting in /etc/abrt/abrt-action-save-package-data.conf is set to “yes” (this is the default setting). When set to “yes”, abrtd will only process packages that are signed with a GPG key located in /etc/abrt/gpg_keys. Any core that isn’t generated from a signed package is automatically deleted.
Solution
Change the value for the OpenGPGCheck to “no”.
Open /etc/abrt/abrt-action-save-package-data.conf in a text editor with root privileges.
Change the value of OpenGPGCheck to “no”.
Save the changes and close the editor
It is not necessary to restart the abrt daemon or slapd for the change to go in to effect.