diff options
author | Reinhard Tartler <siretart@tauware.de> | 2011-10-10 17:43:39 +0200 |
---|---|---|
committer | Reinhard Tartler <siretart@tauware.de> | 2011-10-10 17:43:39 +0200 |
commit | f4092abdf94af6a99aff944d6264bc1284e8bdd4 (patch) | |
tree | 2ac1c9cc16ceb93edb2c4382c088dac5aeafdf0f /nx-X11/util/memleak/README | |
parent | a840692edc9c6d19cd7c057f68e39c7d95eb767d (diff) | |
download | nx-libs-f4092abdf94af6a99aff944d6264bc1284e8bdd4.tar.gz nx-libs-f4092abdf94af6a99aff944d6264bc1284e8bdd4.tar.bz2 nx-libs-f4092abdf94af6a99aff944d6264bc1284e8bdd4.zip |
Imported nx-X11-3.1.0-1.tar.gznx-X11/3.1.0-1
Summary: Imported nx-X11-3.1.0-1.tar.gz
Keywords:
Imported nx-X11-3.1.0-1.tar.gz
into Git repository
Diffstat (limited to 'nx-X11/util/memleak/README')
-rw-r--r-- | nx-X11/util/memleak/README | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/nx-X11/util/memleak/README b/nx-X11/util/memleak/README new file mode 100644 index 000000000..9be2d9ca5 --- /dev/null +++ b/nx-X11/util/memleak/README @@ -0,0 +1,70 @@ +.\" $Xorg: README,v 1.3 2000/08/17 19:55:19 cpqbld Exp $ + +This library replaces the C library allocator; +providing malloc, free, realloc and calloc (sorry, no valloc) + +In doing so, it provides extensive memory bug checking, locating: + + Lost memory; memory which has not been freed and which has no + references + + In use free memory; memorhy which has been freed and still has + references to it. + + Stores to freed memory + + free/realloc with invalid pointers -- if you pass in a pointer to + the middle of an allocated block, it will even tell you which one + +For each of these errors, a report entry is generated which includes +the stack backtrace of either the allocation or free (which ever occured +last) along with the current stack, when relevant. + +Unreferenced allocated memory, stores to freed memory and referenced freed +memory are only caught when CheckMemory is called. It is automatically +called each time 1m of data has been freed, and is called when the program +exits (by registering with atexit(3)/on_exit(3)). You can call it whenever +you want. + +Both the X server and font servers call CheckMemory after each reset when +their respective os/utils.c are compiled -DMEMBUG. + +There are a few global variables you can set with the debugger to +help isolate problems: + + FindLeakWarnMiddlePointers + Normally, memleak ignores pointers to the middle of + freed memory. These are frequently simply random data + which happens to look like a pointer. Turning this + on will generate additional messages. + FindLeakAllocBreakpoint + At each allocation, memleak increments a serial number + and stores it in the allocation header. By rerunning + the program, you can stop when that piece of memory + is going to be allocated. Store the serial number + in this global variable and put a debugger breakpoint inside + AddActiveBlock at the indicated line. + FindLeakFreeBreakpoint + Similarly for freeing memory. + FindLeakTime + The current serial number + FindLeakCheckAlways + When set, memleak checks the entire memory system after + each allocation or free. This is very expensive, but + may catch errors not otherwise found until too late. + +To include this in your application, simply place libmemleak.a before the +end of the link line; it will then override the C library allocator. + +To port this system to a new machine, you must provide two values, one +indicating the lowest data address in a program and one indicating the +highest stack address. In addition, to get return stack traces (which are +almost essential for debugging), you must provide the function +getReturnStack. Samples for MIPS and SPARC are included already. + +The output from the leak tracer includes only PC values in the stack +traces. To convert these into useful values, run the output of +the leak tracer through the find-routines script; after making sure you have +built the modified version of gdb-4.4 on your machine. + +-keith |