blob: c3cceccd287fcb849bb2b08cf688f1b194021f45 [file] [log] [blame]
Sergey Matveevf4633ac2013-05-14 15:48:54 +00001================
2LeakSanitizer
3================
4
5.. contents::
6 :local:
7
8Introduction
9============
10
Sergey Matveev072db592013-12-10 20:10:30 +000011LeakSanitizer is a run-time memory leak detector. It can be combined with
Alexey Samsonov710d9f82016-01-22 01:35:45 +000012:doc:`AddressSanitizer` to get both memory error and leak detection, or
13used in a stand-alone mode. LSan adds almost no performance overhead
14until the very end of the process, at which point there is an extra leak
15detection phase.
Sergey Matveevf4633ac2013-05-14 15:48:54 +000016
Alexey Samsonov710d9f82016-01-22 01:35:45 +000017Usage
18=====
Sergey Matveevf4633ac2013-05-14 15:48:54 +000019
Alexey Samsonov710d9f82016-01-22 01:35:45 +000020LeakSanitizer is only supported on x86\_64 Linux. In order to use it,
21simply build your program with :doc:`AddressSanitizer`:
Sergey Matveev072db592013-12-10 20:10:30 +000022
Alexey Samsonov710d9f82016-01-22 01:35:45 +000023.. code-block:: console
Sergey Matveev072db592013-12-10 20:10:30 +000024
Alexey Samsonov710d9f82016-01-22 01:35:45 +000025 $ 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
41To use LeakSanitizer in stand-alone mode, link your program with
42``-fsanitize=leak`` flag. Make sure to use ``clang`` (not ``ld``) for the
43link step, so that it would link in proper LeakSanitizer run-time library
44into the final executable.
Sergey Matveevf4633ac2013-05-14 15:48:54 +000045
46More Information
47================
48
Alexey Samsonov2e2469d2015-12-04 00:38:13 +000049`<https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer>`_