diff options
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 |