umem_debug(3malloc) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

umem_debug(3malloc)

umem_debug(3MALLOC)   Memory Allocation Library Functions  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  runtime  debugging features is controlled by environment vari‐
       ables.


       On Oracle SPARC systems with support for the Application Data Integrity
       (ADI) feature the libumem functions also support the  ADIHEAP  security
       extension. When the ADIHEAP security extension is enabled for the call‐
       ing  program, the libumem functions will use the SPARC Application Data
       Integrity APIs to provide detection of buffer overruns, out  of  bounds
       pointers,  use  after  free  errors, use after reallocation errors, and
       stale pointer errors. For more information, see the adi(7) and sxadm(8)
       manual pages.


       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. Unrecog‐
           nized options are ignored. Possible options include:

           adi_precise

               Enable precise mode ADI trapping where memory write errors  are
               caught  a  few instructions after the exact instruction is exe‐
               cuted. This has an overall performance overhead,  but  is  more
               accurate  at  determining the exact point that an ADI fault oc‐
               curred. The default is to use disrupting mode traps.  For  more
               information, see the adi(7) manual page.


           audit[=frames]

               This  option enables the recording of auditing information, in‐
               cluding 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  au‐
               diting information is also logged.

               The  frames  parameter sets the number of stack frames recorded
               in the auditing structure. The upper bound for frames is imple‐
               mentation-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  en‐
               abled,  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 allocated and  freed  buffers  with
               special  patterns  to help detect the use of uninitialized data
               and previously freed buffers. It also enables an 8-byte redzone
               after each buffer that contains 0xfeedfacefeedfaceULL.

               When an object is freed, it is filled with 0xdeadbeef. When  an
               object is allocated, the 0xdeadbeef pattern is verified and re‐
               placed  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 descriptions 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 au‐
               dit structures from previous transactions 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 terabytes, respectively.

           Logs  that are not listed or that have either a size of 0 or an in‐
           valid size are disabled.

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


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

       tab()  box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
       TRIBUTE VALUE _ Interface StabilityUncommitted _ MT-LevelMT-Safe


SEE ALSO
       mdb(1), abort(3C), signal(3C), umem_cache_create(3MALLOC), adi(7),  at‐
       tributes(7)


       Oracle 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.

Oracle Solaris 11.4               11 May 2021              umem_debug(3MALLOC)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3