r199383 - [ASan] Describe online/offline symbolization of reports, mention dsymutil.

Alexander Potapenko glider at google.com
Thu Jan 16 06:12:31 PST 2014


Done, r199388.

On Thu, Jan 16, 2014 at 6:03 PM, Alexey Samsonov <samsonov at google.com> wrote:
> On Thu, Jan 16, 2014 at 5:46 PM, Alexander Potapenko <glider at google.com> wrote:
>> Author: glider
>> Date: Thu Jan 16 07:46:29 2014
>> New Revision: 199383
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=199383&view=rev
>> Log:
>> [ASan] Describe online/offline symbolization of reports, mention dsymutil.
>>
>> Modified:
>>     cfe/trunk/docs/AddressSanitizer.rst
>>
>> Modified: cfe/trunk/docs/AddressSanitizer.rst
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/AddressSanitizer.rst?rev=199383&r1=199382&r2=199383&view=diff
>> ==============================================================================
>> --- cfe/trunk/docs/AddressSanitizer.rst (original)
>> +++ cfe/trunk/docs/AddressSanitizer.rst Thu Jan 16 07:46:29 2014
>> @@ -61,14 +61,13 @@ or:
>>      % clang -g -fsanitize=address example_UseAfterFree.o
>>
>>  If a bug is detected, the program will print an error message to stderr and
>> -exit with a non-zero exit code. Currently, AddressSanitizer does not symbolize
>> -its output, so you may need to use a separate script to symbolize the result
>> -offline (this will be fixed in future).
>> +exit with a non-zero exit code. To make AddressSanitizer symbolize its output
>> +you need to set the ``ASAN_SYMBOLIZER_PATH`` environment variable to point to
>> +the ``llvm-symbolizer`` binary:
>
>
> Should we mention that it's generally enough to have llvm-symbolizer
> in your PATH?
>
>>
>>  .. code-block:: console
>>
>> -    % ./a.out 2> log
>> -    % projects/compiler-rt/lib/asan/scripts/asan_symbolize.py / < log | c++filt
>> +    % ASAN_SYMBOLIZER_PATH=/usr/local/bin/llvm-symbolizer ./a.out
>>      ==9442== ERROR: AddressSanitizer heap-use-after-free on address 0x7f7ddab8c084 at pc 0x403c8c bp 0x7fff87fb82d0 sp 0x7fff87fb82c8
>>      READ of size 4 at 0x7f7ddab8c084 thread T0
>>          #0 0x403c8c in main example_UseAfterFree.cc:4
>> @@ -84,6 +83,23 @@ offline (this will be fixed in future).
>>          #2 0x7f7ddabcac4d in __libc_start_main ??:0
>>      ==9442== ABORTING
>>
>> +If that does not work for you (e.g. your process is sandboxed), you can use a
>> +separate script to symbolize the result offline (online symbolization can be
>> +force disabled by setting ``ASAN_OPTIONS=symbolize=1``):
>> +
>> +.. code-block:: console
>> +
>> +    % ./a.out 2> log
>> +    % projects/compiler-rt/lib/asan/scripts/asan_symbolize.py / < log | c++filt
>> +    ==9442== ERROR: AddressSanitizer heap-use-after-free on address 0x7f7ddab8c084 at pc 0x403c8c bp 0x7fff87fb82d0 sp 0x7fff87fb82c8
>> +    READ of size 4 at 0x7f7ddab8c084 thread T0
>> +        #0 0x403c8c in main example_UseAfterFree.cc:4
>> +        #1 0x7f7ddabcac4d in __libc_start_main ??:0
>> +    ...
>> +
>> +Note that on OS X you may need to run ``dsymutil`` on your binary to have the
>> +file\:line info in the AddressSanitizer reports.
>> +
>>  AddressSanitizer exits on the first detected error. This is by design.
>>  One reason: it makes the generated code smaller and faster (both by
>>  ~5%). Another reason: this makes fixing bugs unavoidable. With Valgrind,
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
>
>
> --
> Alexey Samsonov, MSK



-- 
Alexander Potapenko
Software Engineer
Google Moscow



More information about the cfe-commits mailing list