How to enable core file dumps when an application crashes or segmentation faults
Environment
- Red Hat Enterprise Linux 5
- Red Hat Enterprise Linux 4
- Red Hat Enterprise Linux 3
- For Red Hat Enterprise Linux 6, 7, 8 , please refer the NOTE in the resolution section.
Issue
- How to enable core file dumps when an application crashes or segmentation faults (segfault)
- How to configure core dumps in Red Hat Enterprise Linux
- How to generate a core dump in Red Hat Enterprise Linux
- Please let us know how to enable core dumps in jboss 71 and after generating dump were we can check the dump file and process for moving dump file to other location.
Resolution
Note:- There are a couple of ways to enable core file creation. Below methods may conflict with abrt-* services, please use them with abrt-* services stopped and disabled.
Preferred method
-
Replace the above
ulimitcommand in/etc/profilewith the following (this will allow all users to produce core files of unlimited size):# ulimit -S -c unlimited > /dev/null 2>&1 -
To disallow users of the system to be able to dump core files, configure the
/etc/security/limits.conffile to allow only certain users or groups to create core files. For example, if all the members of the "devel" group are to be allowed to dump core files:#<domain> <type> <item> <value> @devel soft core <value> -
The field < value > is the maximum block size of a core file. The
/etc/security/limits.conffile is well documented with usage and options at the top of the file. Please note that for these settings to be honored, it is necessary to comment out the above mentionedulimitcommand in the/etc/profilefile as follows:# No core files by default # ulimit -S -c 0 > /dev/null 2>&1 -
If this application is being started within its init script with the
daemoncommand, edit the/etc/init.d/functionsfile to comment out or change this line:# ulimit -S -c 0 >/dev/null 2>&1
-
With this setup, a core file from the application should result. If this does not generate a core, make sure that the application has the correct uid and that it does not use setuid to change uid when running.
-
RHEL 3, use the following command to enable the dumping of setuid applications:
# echo 1 > /proc/sys/kernel/core_setuid_ok -
Other RHEL version, use following sysctl settings in /etc/sysctl.conf. The
core_patternbelow is just an example.kernel.core_pattern=/var/crash/core_%e_%p_%h_%t kernel.core_uses_pid=1 fs.suid_dumpable=1
-
Alternate method
1, The following method has been provided by Red Hat, but is outside the scope of the posted Service Level Agreements and support procedures.
-
Add the following call to the application source (in the C language):
prctl(PR_SET_DUMPABLE, 1);
Notes
-
By default, core files are created in the working directory of the faulting application. To override this and specify a location for the files, enter the following command (as root) replacing "/tmp" with the desired target directory:
# echo "/tmp/core" > /proc/sys/kernel/core_patternThis will generate a core file under /tmp as:
core.$PID -
If you change to non-root user test via su - test and found the setting core size not effect via ulimit -a , you could check the /etc/profile and comment out the ulimit -S -c 0 > /dev/null 2>&1
# No core files by default # ulimit -S -c 0 > /dev/null 2>&1 -
For Red Hat Enterprise Linux 6, refer How to collect core dump file of a crashing program that is shipped in Red Hat Enterprise Linux 6/7/8?
- For background on segmentation faults, refer to A Guide for Troubleshooting a Segfault
- Refer What to do if a third party application segfaults if it is a third party application.
-
For some services this configuration not works, such as sendmail. In this case, please comment out
corelimit="ulimit -S -c ${DAEMON_COREFILE_LIMIT:-0}"in /etc/init.d/function and try again:# kill -11 <pid>
-
For Red Hat Enterprise Linux 7/8, refer How to collect core dump file of a crashing program that is shipped in Red Hat Enterprise Linux 6/7/8?
-
The limit is set by systemd, add the following setting in
/etc/systemd/system.confcan be set it asunlimited.DefaultLimitCORE=infinity -
Run
systemctl daemon-reexecor reboot the system
-
-
For Daemon process
Root Cause
-
In Red Hat Enterprise Linux core file creation is disabled by default. This is done by the following
ulimitcommand in/etc/profile:# ulimit -S -c 0 > /dev/null 2>&1
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
9 Comments
Hallo,
I think point 5 on this site differs to the second passage on this page "https://access.redhat.com/knowledge/solutions/4058".
I think point 5 is not correct for rhel 5, I think for rhel 5 the solution on the other page is the right one?
Regards,
Stefan
To test that your configuration is right
what signals are valid for this platform
BE CAREFUL
or
or
To it manually
i understand normal method , but i am bit more explanations on alternative method .
Suppose daemon is automatically stopping. Can I get coredump?
improvisioning is my service name How to get core dump? Can nay one help on this?
Is it just me, or are steps #1 and #3 in the Resolution confusingly conflicting? It says to modify the ulimit line in /etc/profile, but then also that you must comment out the line that you've already modified. My reading is that it is sufficient to just modify it as in step 1, but it could probably stand to be stated more clearly if that is the case. If anyone can confirm that's what is intended, I can edit.
Thanks
Where is the writeup on how to enable core dumps for RH7???
Helpful
Can we achieve this on a container on OCP 4.9 / Rhel 7?
As /proc/sys/kernel/core_pattern is a read only FS and share with the underlying node.
Just a note : the above solution is not usable in OpenShift 4.x in a multitenant mode and just does not work for a normal user. You will have to get a cluster admin involved to retrieve the core dump file.
When there is major push for self service as a customer, the above does not address the need for a customer to do it themselves.