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

Alexey Samsonov samsonov at google.com
Thu Jan 16 06:03:31 PST 2014


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



More information about the cfe-commits mailing list