umem_debug man page on SmartOS

Man page or keyword search:  
man Server   16655 pages
apropos Keyword Search (all sections)
Output format
SmartOS logo
[printable version]

UMEM_DEBUG(3MALLOC)					   UMEM_DEBUG(3MALLOC)

NAME
       umem_debug - debugging features of the umem library

SYNOPSIS
       cc [ flag... ] file... -lumem [ library... ]
       #include <umem.h>

DESCRIPTION
       The  libumem  library  provides	debugging  features that detect memory
       leaks, buffer overruns, multiple frees, use of uninitialized data,  use
       of freed data, and many other common programming errors. The activation
       of the run-time debugging features is controlled by  environment	 vari‐
       ables.

       When the library detects an error, it writes a description of the error
       to an internal buffer that is readable with  the	 ::umem_status	mdb(1)
       dcmd and then calls abort(3C).

ENVIRONMENT VARIABLES
       UMEM_DEBUG
		       This   variable	contains  a  list  of  comma-separated
		       options.	 Unrecognized options  are  ignored.  Possible
		       options include:

		       audit[=frames]
					   This	 option	 enables the recording
					   of auditing information,  including
					   thread   ID,	 high-resolution  time
					   stamp, and stack trace for the last
					   action   (allocation	 or  free)  on
					   every allocation.   If  transaction
					   logging   (see   UMEM_LOGGING)   is
					   enabled, this auditing  information
					   is also logged.

					   The	frames parameter sets the num‐
					   ber of stack frames recorded in the
					   auditing structure. The upper bound
					   for	 frames	  is   implementation-
					   defined.   If  a  larger  value  is
					   requested, the upper bound is  used
					   instead.

					   If  frames  is  not specified or is
					   not an integer, the	default	 value
					   of 15 is used.

					   This option also enables the guards
					   option.

		       contents[=count]
					   If auditing	and  contents  logging
					   (see UMEM_LOGGING) are enabled, the
					   first count bytes  of  each	buffer
					   are logged when they are freed.  If
					   a  buffer  is  shorter  than	 count
					   bytes,   it	 is   logged   in  its
					   entirety.

					   If count is not specified or is not
					   an  integer,	 the  default value of
					   256 is used.

		       default
					   This	 option	  is   equivalent   to
					   audit,contents,guards.

		       guards
					   This	 option	 enables filling allo‐
					   cated and freed buffers  with  spe‐
					   cial	 patterns  to  help detect the
					   use of uninitialized data and  pre‐
					   viously   freed  buffers.  It  also
					   enables  an	8-byte	redzone	 after
					   each	 buffer	 that contains 0xfeed‐
					   facefeedfaceULL.

					   When an  object  is	freed,	it  is
					   filled  with	 0xdeadbeef.   When an
					   object is allocated, the 0xdeadbeef
					   pattern  is	verified  and replaced
					   with 0xbaddcafe.   The  redzone  is
					   checked  every  time	 a  buffer  is
					   allocated or freed.

					   For caches with either constructors
					   or	  destructors,	   or	 both,
					   umem_cache_alloc(3MALLOC)	   and
					   umem_cache_free(3MALLOC)  apply the
					   cache's constructor and destructor,
					   respectively,  instead  of  caching
					   constructed objects.	 The  presence
					   of  assert(3C)s  in	the destructor
					   verifying that the buffer is in the
					   constructed	state  can  be used to
					   detect any objects returned	in  an
					   improper	    state.	   See
					   umem_cache_create(3MALLOC)	   for
					   details.

		       verbose
					   The	library	 writes error descrip‐
					   tions  to  standard	error	before
					   aborting.  These  messages  are not
					   localized.

       UMEM_LOGGING
		       To be enabled, this variable should be set to a	comma-
		       separated  list	of  in-memory logs. The logs available
		       are:

		       transaction[=size]
					     If the audit debugging option  is
					     set  (see	UMEM_DEBUG), the audit
					     structures from previous transac‐
					     tions are entered into this log.

		       contents[=size]
					     If	 the audit debugging option is
					     set, the contents of objects  are
					     recorded  in this log as they are
					     freed.

					     If	  the	"contents"   debugging
					     option  was not set, 256 bytes of
					     each freed buffer are saved.

		       fail[=size]
					     Records are entered into this log
					     for every failed allocation.

		       For any of these options, if size is not specified, the
		       default value of 64k is used.  The size parameter  must
		       be  an integer that can be qualified with K, M, G, or T
		       to specify kilobytes,  megabytes,  gigabytes,  or  ter‐
		       abytes, respectively.

		       Logs  that are not listed or that have either a size of
		       0 or an invalid size are disabled.

		       The  log	 is  disabled  if  during  initialization  the
		       requested amount of storage cannot be allocated.

ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:

       ┌────────────────────┬─────────────────┐
       │  ATTRIBUTE TYPE    │ ATTRIBUTE VALUE │
       ├────────────────────┼─────────────────┤
       │Interface Stability │ Unstable	      │
       ├────────────────────┼─────────────────┤
       │MT-Level	    │ MT-Safe	      │
       └────────────────────┴─────────────────┘

SEE ALSO
       mdb(1),	    abort(3C),	   signal(3C),	   umem_cache_create(3MALLOC),
       attributes(5)

       Solaris Modular Debugger Guide

WARNINGS
       When libumem aborts the process using abort(3C),	 any  existing	signal
       handler	for  SIGABRT is called. If the signal handler performs alloca‐
       tions, undefined behavior can result.

NOTES
       Some of the debugging features work only for allocations	 smaller  than
       16  kilobytes  in size. Allocations larger than 16 kilobytes could have
       reduced support.

       Activating any of the library's debugging features could	 significantly
       increase the library's memory footprint and decrease its performance.

				 Jul 26, 2002		   UMEM_DEBUG(3MALLOC)
[top]

List of man pages available for SmartOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net