.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $OpenBSD: malloc.3,v 1.52 2008/05/20 11:25:26 jmc Exp $
+.\" $OpenBSD: malloc.3,v 1.53 2008/07/28 19:53:03 otto Exp $
.\"
-.Dd $Mdocdate: May 20 2008 $
+.Dd $Mdocdate: July 28 2008 $
.Dt MALLOC 3
.Os
.Sh NAME
.It Cm J
.Dq Junk .
Fill some junk into the area allocated.
-Currently junk is bytes of 0xd0; this is pronounced
+Currently junk is bytes of 0xd0 when allocating; this is pronounced
.Dq Duh .
\&:-)
+Freed chunks are filled with 0xdf.
.It Cm N
Do not output warning messages when encountering possible corruption
or bad pointers.
.It Cm P
-.Dq Pointer Protection .
-Pointer sized allocations are aligned to the end of a page to catch
-sizeof(ptr) errors where sizeof(*ptr) is meant.
+.Dq Move allocations within a page.
+Allocations larger than half a page but smaller that a page
+are aligned to the end of a page to catch buffer overruns in more
+cases.
.It Cm R
.Dq realloc .
Always reallocate when
extern char *malloc_options;
malloc_options = "X";
.Ed
+.Pp
+Note that this will cause code that is supposed to handle
+out-of-memory conditions gracefully to abort instead.
.It Cm Z
.Dq Zero .
Fill some junk into the area allocated (see
If a program changes behavior if either of these options are used,
it is buggy.
.Pp
-The default number of free pages cached is 16.
+The default number of free pages cached is 64.
.Sh RETURN VALUES
The
.Fn malloc
.Pp
Here is a brief description of the error messages and what they mean:
.Bl -tag -width Ds
-.It Dq (ES): mumble mumble mumble
-.Fn malloc
-has been compiled with
-.Dv \&-DEXTRA_SANITY
-and something looks fishy in there.
-Consult sources and/or wizards.
-.It Dq allocation failed
+.It Dq out of memory
If the
.Cm A
option is specified it is an error for
.Fn realloc
to return
.Dv NULL .
-.It Dq mmap(2) failed, check limits.
+.It Dq malloc init mmap failed
This is a rather weird condition that is most likely to indicate a
seriously overloaded system or a ulimit restriction.
-.It Dq freelist is destroyed.
-.Fn malloc Ns 's
-internal freelist has been stomped on.
+.It any other error
+.Fn malloc
+detected an internal error;
+consult sources and/or wizards.
.El
.Pp
Here is a brief description of the warning messages and what they mean:
.Bl -tag -width Ds
-.It Dq chunk/page is already free.
+.It Dq bogus pointer (double free?)
+An attempt to
+.Fn free
+or
+.Fn realloc
+an unallocated pointer was made.
+.It Dq chunk is already free
There was an attempt to free a chunk that had already been freed.
-.It Dq junk pointer, too high to make sense.
-The pointer doesn't make sense.
-It's above the area of memory that
-.Fn malloc
-knows something about.
-This could be a pointer from some
-.Xr mmap 2 'ed
-memory.
-.It Dq junk pointer, too low to make sense.
-The pointer doesn't make sense.
-It's below the area of memory that
-.Fn malloc
-knows something about.
-This pointer probably came from your data or bss segments.
-.It Dq malloc() has never been called.
-Nothing has ever been allocated, yet something is being freed or
-realloc'ed.
-.It Dq modified (chunk-/page-) pointer.
+.It Dq modified (chunk-) pointer
The pointer passed to
.Fn free
or
.Fn realloc
has been modified.
-.It Dq pointer to wrong page.
-The pointer that
-.Fn malloc
-is trying to free is not pointing to
-a sensible page.
-.It Dq recursive call.
+.It Dq recursive call
An attempt was made to call recursively into these functions, i.e., from a
signal handler.
This behavior is not supported.
routines).
.It Dq unknown char in MALLOC_OPTIONS
We found something we didn't understand.
+.It Dq malloc cache overflow/underflow
+The internal malloc page cache has been corrupted.
+.It Dq malloc free slot lost
+The internal malloc page cache has been corrupted.
+.It Dq guard size
+An inconsistent guard size was detected.
.El
.Sh SEE ALSO
.Xr brk 2 ,