I'm trying to understand the core dump generation. Is the core dump generated separately for a user space application process crash and the kernel level crash? Is the ulimit -c for both kinds?

1 Answer 1


When a userland program crashes, it can leave a core file behind, containig a copy of the contents of the memory when it went down (the core name comes from the prehistory of computing, when memory was core). This is controlled by the ulimit(1) command, it is normally disabled as the core files are large and tend to confuse newbies. A core file can be analyzed by e.g. a debugger, together with the executable and symbol table, to find out what happened.

When the kernel crashes, it normally triggers a kernel panic. If the kernel has found some critical inconsistency, it really isn't wise to count on it bahaving sanely to write out anything. So no core gets generated, and the system goes down. Contents of registers and code surrounding the address where the problem happened is written to the console. It is a good idea to save this (e.g. take a picture) for possible later analysis.

A similar situation is the kernel Oops, when the kernel detects an inconsistency that isn't considered fatal. In that case (as in a kernel panic) contents of registers and code surrounding the address where the problem happened is written to the console, and also logged.

  • In my case the kernel version is 2.4.20 and it does not have the proc/sys/kernel/core_pattern file to specify my own path to dump the core file. Whenever I build the kernel(along with the application) and load the bin in my embedded system the current directory is always / and hence it is not able to generate the core dump when my application crashes,maybe due to the permissions issue. Is there any way that I can change the location of the core dump file or change the permissions of the / dir or change the current dir / to other dir say /tmp. Also there is no sysctl.conf file.
    – foo_l
    Commented Mar 11, 2013 at 6:37
  • The simplest may be to move the current working directory of the bin. If you can control how it starts, then first cd to a directory other than / and start it from there. Otherwise, have the bin call chdir("/tmp") (or other dir) if you can. Changing permissions on / is possible, but may be unwise for security reasons.
    – ash
    Commented Aug 28, 2013 at 13:02

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .