CORE (V) 2/7/73 CORE (V)
NAME format of core image
DESCRIPTION UNIX writes out a core image of a terminated pro-
cess when any of various errors occur. See
wait(II) for the list of reasons; the most common
are memory violations, illegal instructions, bus
errors, and user-generated quit signals.
The core image is called "core" and is written in
the process's working directory (provided it can
be; normal access controls apply).
The size and structure of the core image file de-
pend to some extent on which system is involved.
In general there is a 512-byte area at the end
which contains the system's per-process data for
that process. (64 bytes in older systems). The
remainder represents the actual contents of the
user's core area when the core image was written.
In the current system, this area is variable in
size in that only the locations from user 0 to
the program break, plus the stack, are dumped.
When any fatal trap occurs, all the useful regis-
ters are stored on the stack. In the current
system, which has relocation and protection hard-
ware, the stack used is the system stack, which
is kept in the per-process area; in older sys-
tems, there is only one stack, and it is located
in the user's core area.
The actual format of the information is compli-
cated because it depends on what hardware is pre-
sent (EAE, floating-point option), whether
single- or double-precision floating mode is in
effect, and also involves relocating addresses in
the system's address space. A guru will have to
be consulted if enlightenment is required.
In general the debugger db(I) should be used to
deal with core images.
SEE ALSO db(I), wait(II)