llvm-project/compiler-rt/lib/asan
Matt Morehouse 52fd169035 [libFuzzer] Report at most one crash per input.
Summary:
Fixes https://github.com/google/sanitizers/issues/788/, a deadlock
caused by multiple crashes happening at the same time.  Before printing
a crash report, we now test and set an atomic flag.  If the flag was
already set, the crash handler returns immediately.

Reviewers: kcc

Reviewed By: kcc

Subscribers: llvm-commits, kubamracek

Differential Revision: https://reviews.llvm.org/D46277

llvm-svn: 331310
2018-05-01 21:01:53 +00:00
..
scripts [asan] Remove malloc_context_size=0 from asan_device_setup. 2018-04-12 22:06:18 +00:00
tests [sanitizer] Split Symbolizer/StackTraces from core RTSanitizerCommon 2018-04-16 16:32:19 +00:00
.clang-format Tell clang-format that (most) sanitizers are written using Google style guide. 2015-11-19 22:11:10 +00:00
CMakeLists.txt [sanitizer] Split Symbolizer/StackTraces from core RTSanitizerCommon 2018-04-16 16:32:19 +00:00
README.txt [ASan] Fix the links to bugs and wikipages. 2015-12-04 17:37:40 +00:00
asan.syms.extra [asan] Export __sancov_* symbols symbols. 2017-01-31 20:23:07 +00:00
asan_activation.cc [asan] Ensure that the minimum redzone is at least SHADOW_GRANULARITY 2017-11-16 17:03:25 +00:00
asan_activation.h
asan_activation_flags.inc ASAN activate/deactive controls thread_local_quarantine_size_kb option. 2017-01-12 18:51:25 +00:00
asan_allocator.cc [ASan] Report proper ASan error on allocator failures instead of CHECK(0)-ing 2018-03-28 18:22:40 +00:00
asan_allocator.h Change kAllocatorSpace for powerpc64. 2018-04-23 21:13:40 +00:00
asan_blacklist.txt
asan_debugging.cc [asan] Add a new AddressDescription structure, which can describe any type of address. 2016-09-09 20:43:20 +00:00
asan_descriptions.cc [asan] Add vfork to the list of reasons for stack errors. 2018-03-28 00:45:20 +00:00
asan_descriptions.h [ASan] Enhance libsanitizer support for invalid-pointer-pair. 2017-12-04 18:00:24 +00:00
asan_errors.cc [ASan] Report proper ASan error on allocator failures instead of CHECK(0)-ing 2018-03-28 18:22:40 +00:00
asan_errors.h [ASan] NFC: make use of a new ErrorBase ctor 2018-04-09 16:00:10 +00:00
asan_fake_stack.cc [asan] Avoid assert failure for non-default shadow scale 2017-11-16 22:02:58 +00:00
asan_fake_stack.h fix random typos [NFC] 2016-08-05 18:49:08 +00:00
asan_flags.cc [scudo] Allow options to be defined at compile time 2018-02-08 16:29:48 +00:00
asan_flags.h
asan_flags.inc Make detect_invalid_pointer_pairs option to be tristate. 2018-02-01 19:52:56 +00:00
asan_fuchsia.cc (NFC) Rename GetMax{,User}VirtualAddress. 2017-11-07 23:51:22 +00:00
asan_globals.cc [asan] Unpoison global metadata on dlclose. 2017-09-28 13:38:58 +00:00
asan_globals_win.cc [asan] Align __asan_global_start so that it works with LLD 2018-04-26 20:46:50 +00:00
asan_init_version.h [asan] Use dynamic shadow on 32-bit Android, try 2. 2017-11-20 17:41:57 +00:00
asan_interceptors.cc Revert "[asan] Replace vfork with fork." 2018-03-27 00:31:16 +00:00
asan_interceptors.h Revert "[asan] Replace vfork with fork." 2018-03-27 00:31:16 +00:00
asan_interceptors_memintrinsics.cc [asan] Interceptors for Fuchsia 2017-08-02 07:59:30 +00:00
asan_interceptors_memintrinsics.h [asan] Fix bug where suppression of overlapping accesses was ignored on 2018-03-08 21:50:22 +00:00
asan_interface.inc [asan] Fix dead stripping of globals on Linux (compiler-rt). 2017-04-27 20:27:33 +00:00
asan_interface_internal.h [asan] Fix dead stripping of globals on Linux (compiler-rt). 2017-04-27 20:27:33 +00:00
asan_internal.h [asan] Refactor thread creation bookkeeping 2017-08-09 00:38:57 +00:00
asan_linux.cc [asan] Fix filename size on linux platforms. 2018-02-07 18:27:25 +00:00
asan_lock.h
asan_mac.cc [asan] Be more careful and verbose when allocating dynamic shadow memory 2018-02-26 18:33:21 +00:00
asan_malloc_linux.cc [Sanitizers] Basic sanitizer Solaris support (PR 33274) 2017-12-14 20:14:29 +00:00
asan_malloc_mac.cc [Sanitizers] Add more standard compliant posix_memalign implementation for LSan. 2018-03-12 21:59:06 +00:00
asan_malloc_win.cc Fix -Wstring-conversion instance 2017-03-15 19:50:02 +00:00
asan_mapping.h [PowerPC][asan] Update asan to handle changed memory layouts in newer kernels 2017-12-07 22:53:49 +00:00
asan_memory_profile.cc [Sanitizers] Add more details to ASan allocator stats report. 2017-10-13 18:38:10 +00:00
asan_new_delete.cc [ASan] Report proper ASan error on allocator failures instead of CHECK(0)-ing 2018-03-28 18:22:40 +00:00
asan_poisoning.cc [asan] poison_heap=0 should not disable __asan_handle_no_return. 2018-03-12 21:46:55 +00:00
asan_poisoning.h [asan] poison_heap=0 should not disable __asan_handle_no_return. 2018-03-12 21:46:55 +00:00
asan_posix.cc [sanitizer] Remove unused <signal.h> which conflicts with asan declarations 2017-11-10 04:12:35 +00:00
asan_preinit.cc
asan_premap_shadow.cc [asan] Use dynamic shadow on 32-bit Android, try 2. 2017-11-20 17:41:57 +00:00
asan_premap_shadow.h [asan] Use dynamic shadow on 32-bit Android, try 2. 2017-11-20 17:41:57 +00:00
asan_report.cc [libFuzzer] Report at most one crash per input. 2018-05-01 21:01:53 +00:00
asan_report.h [ASan] Report proper ASan error on allocator failures instead of CHECK(0)-ing 2018-03-28 18:22:40 +00:00
asan_rtl.cc [sanitizers] Add init function to set alignment of low level allocator 2017-11-21 01:01:32 +00:00
asan_scariness_score.h [asan] Add const into ScarinessScoreBase::Print 2017-09-14 03:06:20 +00:00
asan_shadow_setup.cc [asan] Use dynamic shadow on 32-bit Android, try 2. 2017-11-20 17:41:57 +00:00
asan_stack.cc
asan_stack.h [sanitizers] Rename GetStackTraceWithPcBpAndContext 2017-11-09 07:53:06 +00:00
asan_stats.cc [ASan] Clean up obsolete stats. 2015-06-26 19:18:02 +00:00
asan_stats.h [ASan] Clean up obsolete stats. 2015-06-26 19:18:02 +00:00
asan_suppressions.cc General definition for weak functions 2017-01-29 05:44:59 +00:00
asan_suppressions.h [asan] add suppressions for odr violations 2015-02-25 00:49:12 +00:00
asan_thread.cc [ASan] Enhance libsanitizer support for invalid-pointer-pair. 2017-12-04 18:00:24 +00:00
asan_thread.h [ASan] Enhance libsanitizer support for invalid-pointer-pair. 2017-12-04 18:00:24 +00:00
asan_win.cc Fix-up for r326106: FindAvailableMemoryRange needs a nullptr as its 5th argument. 2018-02-26 18:44:43 +00:00
asan_win_dll_thunk.cc Fix WinASan after moving wcslen interceptor to sanitizer_common 2017-06-29 17:15:53 +00:00
asan_win_dynamic_runtime_thunk.cc [sanitizer] Add dynamic_runtime_thunk for different sanitizers. 2017-02-02 23:01:41 +00:00
asan_win_weak_interception.cc [sanitizer] Use interception to access to strong definitions in the executable. 2017-02-02 23:02:11 +00:00
weak_symbols.txt Add lsan interceptors for libdispatch functions on darwin 2017-06-19 19:21:31 +00:00

README.txt

AddressSanitizer RT
================================
This directory contains sources of the AddressSanitizer (ASan) runtime library.

Directory structure:
README.txt       : This file.
Makefile.mk      : File for make-based build.
CMakeLists.txt   : File for cmake-based build.
asan_*.{cc,h}    : Sources of the asan runtime library.
scripts/*        : Helper scripts.
tests/*          : ASan unit tests.

Also ASan runtime needs the following libraries:
lib/interception/      : Machinery used to intercept function calls.
lib/sanitizer_common/  : Code shared between various sanitizers.

ASan runtime currently also embeds part of LeakSanitizer runtime for
leak detection (lib/lsan/lsan_common.{cc,h}).

ASan runtime can only be built by CMake. You can run ASan tests
from the root of your CMake build tree:

make check-asan

For more instructions see:
https://github.com/google/sanitizers/wiki/AddressSanitizerHowToBuild