core(4) Kernel Interfaces Manual core(4)
NAME
core - Format of memory image file
SYNOPSIS
#include <sys/core.h>
DESCRIPTION
The system writes out a memory image of a terminated process when any of various errors occur. See sigaction(2) for the list of reasons;
the most common are memory violations, illegal instructions, bus errors, and user-generated quit signals. The memory image is called core
and is written in the process's working directory (provided that it can be; normal access controls apply).
The maximum size of a core file is limited. If a process exceeds this limit, any remaining data to be written to the core file is lost.
Default behavior is for the system to create a file named core, overwriting any other file with that name in the working directory.
You can enable enhanced core file naming, which causes the system to create unique names for core files. Core files are not overwritten,
thereby preventing loss of valuable debugging information when the same program fails mulitiple times (and perhaps for mulitple reasons).
When enhanced core file naming is enabled, the system produces core files with names in the following format:
core.program_name.host_name.numeric_tag The literal string core. Up to sixteen characters taken from the program name as shown by the ps
command. The first portion of the system's network host name, or up to 16 characters of the host name, taken from the part of the host
name that precedes the first dot. This tag is assigned to the core file to make it unique among all of the core files generated by a pro-
gram on a host. The maximum value for this tag, and thus the maximum number of core files for this program and host, is set by a system
configuration parameter.
Note the tag is not a literal version number. The system selects the first available unique tag for the core file. For example, if a
program's core files have tags .0, .1, and .3, the system uses tag .2 for the next core file it creates for that program. If the
system-configured limit for core file instances is reached, the system will not create any more core files for that program/host
combination. By default, the system can create up to 16 versions of a core file.
For example, the fourth core file generated on host buggy.net.ooze.com by the program dropsy would be: core.dropsy.buggy.3
Enhanced core file naming can be enabled at the system level or the program level: At the system level, you can enable enhanced core file
naming by setting the enhanced-core-name system configuration variable to 1 in the proc subsystem: proc:
enhanced-core-name = 1 At the program level, you can enable enhanced core file naming by calling the uswitch system call with the
USW_CORE flag set. See the EXAMPLE section.
The system manager can limit the number of unique core file versions that a program can create on a specific host system by setting the
system configuration variable enhanced-core-max-versions to the desired value: proc:
enhanced-core-name = 1
enhanced-core-max-versions = 8 The miminum value is 1, the maximum is 99,999, and the default is 16.
EXAMPLE
The following example shows a code fragment that calls the uswitch system call with the USW_CORE flag set: #include <signal.h> #include
<sys/uswitch.h>
/*
* Request enhanced core file naming for
* this process then create a core file.
*/ main() {
long uval = uswitch(USC_GET, 0);
uval = uswitch(USC_SET, uval | USW_CORE);
if (uval < 0) {
perror("uswitch");
exit(1);
}
raise(SIGQUIT); }
In general, the debugger dbx(1) is sufficient to deal with core images.
RELATED INFORMATION
sigaction(2), uswitch(2), sysconfigdb(8), dbx(1) delim off
core(4)