.pa 1
.he 'CORE (V)'2/7/73'CORE (V)'
.ti 0
NAME		format of core image
.sp
.ti 0
DESCRIPTION	UNIX
writes out a core image of a terminated
process 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
depend 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 registers are stored on the stack.
In the current system, which has relocation and protection
hardware, the stack used is the system
stack, which is kept in the per-process area;
in older systems,
there is only one stack, and it is located in the
user's core area.

The actual format of the information is complicated
because it depends on what hardware is present (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.

.ti 0
SEE ALSO	db(I), wait(II)
