1 ================ 2 LeakSanitizer 3 ================ 4 5 .. contents:: 6 :local: 7 8 Introduction 9 ============ 10 11 LeakSanitizer is a run-time memory leak detector. It can be combined with 12 :doc:`AddressSanitizer` to get both memory error and leak detection, or 13 used in a stand-alone mode. LSan adds almost no performance overhead 14 until the very end of the process, at which point there is an extra leak 15 detection phase. 16 17 Usage 18 ===== 19 20 LeakSanitizer is only supported on x86\_64 Linux. In order to use it, 21 simply build your program with :doc:`AddressSanitizer`: 22 23 .. code-block:: console 24 25 $ cat memory-leak.c 26 #include <stdlib.h> 27 void *p; 28 int main() { 29 p = malloc(7); 30 p = 0; // The memory is leaked here. 31 return 0; 32 } 33 % clang -fsanitize=address -g memory-leak.c ; ./a.out 34 ==23646==ERROR: LeakSanitizer: detected memory leaks 35 Direct leak of 7 byte(s) in 1 object(s) allocated from: 36 #0 0x4af01b in __interceptor_malloc /projects/compiler-rt/lib/asan/asan_malloc_linux.cc:52:3 37 #1 0x4da26a in main memory-leak.c:4:7 38 #2 0x7f076fd9cec4 in __libc_start_main libc-start.c:287 39 SUMMARY: AddressSanitizer: 7 byte(s) leaked in 1 allocation(s). 40 41 To use LeakSanitizer in stand-alone mode, link your program with 42 ``-fsanitize=leak`` flag. Make sure to use ``clang`` (not ``ld``) for the 43 link step, so that it would link in proper LeakSanitizer run-time library 44 into the final executable. 45 46 More Information 47 ================ 48 49 `<https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer>`_ 50