Commit Graph

2672 Commits

Author SHA1 Message Date
Dmitry Vyukov 3d15bcca1d tsan: do not try to use builtin atomic operations
see the comment in code

llvm-svn: 191132
2013-09-21 04:59:02 +00:00
Dmitry Vyukov a182592aa0 tsan: intercept close syscall
llvm-svn: 191129
2013-09-21 03:47:35 +00:00
Alexander Potapenko 6c49695e7a [ASan] Remove a complex multiline comment that baffles lint.
That comment is repeated in another function below.

llvm-svn: 191085
2013-09-20 11:33:14 +00:00
Alexander Potapenko d1bae72e39 [libsanitizer] Pass an explicit template to mktemp. Running mktemp without a template doesn't work on Darwin.
llvm-svn: 191084
2013-09-20 11:29:44 +00:00
Alexander Potapenko bff7e64a3f [ASan] Fix compilation of asan_str_test.cc on non-Darwin.
llvm-svn: 191083
2013-09-20 11:03:27 +00:00
Alexander Potapenko 7be1a632b2 [ASan] Enforce the memmove semantics for both memcpy() and memmove() interceptors on Darwin.
Due to bugs in the interposition of resolver functions on 10.7 and 10.8 both memcpy() and memmove()
were previously intercepted by INTERCEPTOR(memcpy), which led to false positives and crashes (see http://llvm.org/bugs/show_bug.cgi?id=16362)
We choose to use a memmove-like function in both cases. This effectively disables the overlap checks in memcpy(), but the overlaps
aren't possible in practice, because memcpy() and memmove() are the same function on Darwin.

Once the interposition is fixed in 10.9, we'll need to revisit this issue, see https://code.google.com/p/address-sanitizer/issues/detail?id=226

llvm-svn: 191081
2013-09-20 10:56:34 +00:00
Kostya Serebryany 2ab5a48dbe [asan] nuke yet another async-signal-safety bug in UAR (oh, my)
llvm-svn: 191080
2013-09-20 09:16:21 +00:00
Alexey Samsonov 29d7be1f68 [Sanitizer] Add pthread_cond_init to the list of versioned functions
llvm-svn: 191078
2013-09-20 08:37:57 +00:00
Dmitry Vyukov 481d90c480 tsan: handle memory read/write in syscalls
llvm-svn: 191074
2013-09-20 06:54:14 +00:00
Dmitry Vyukov c7547d0527 tsan: allow to ignore memory accesses in malloc and free
llvm-svn: 191072
2013-09-20 05:37:36 +00:00
Dmitry Vyukov 20f6ff1e66 tsan: do not crash when user intercepts fopen()
llvm-svn: 191066
2013-09-20 02:01:38 +00:00
Dmitry Vyukov b523b9c8d4 tsan: fix linking of tsan runtime into dynamic libraries
versioned symbols can not be linked into dynamic library w/o linker script
also simplifies code as side effect

llvm-svn: 191056
2013-09-19 23:44:51 +00:00
Alexander Potapenko 8f5d907aea [ASan] Fix init-order-dlopen.cc test to not depend on the -Wl,-undefined,dynamic_lookup being passed to the linker.
llvm-svn: 191012
2013-09-19 17:12:45 +00:00
Kostya Serebryany f8bbdfaf95 [asan] fix one more async-signal-safety issue with use-after-return
llvm-svn: 191004
2013-09-19 14:59:52 +00:00
Alexey Samsonov 786ee9b1ad [MSan] Fix -Wempty-body warning
llvm-svn: 190994
2013-09-19 08:35:16 +00:00
Alexey Samsonov 1c5cd7516f [TSan] Fix -Wempty-body warning
llvm-svn: 190993
2013-09-19 07:59:18 +00:00
Dmitry Vyukov d78bc3aa11 asan/tsan/msan: use builtin atomic operations when available
this should fix episodic crashes on ARM/PPC
x86_32 is still broken

llvm-svn: 190991
2013-09-19 06:02:56 +00:00
Dmitry Vyukov f54631dcfe tsan: prevent the following false positive due to __cxa_atexit
WARNING: ThreadSanitizer: data race (pid=29103)
  Write of size 8 at 0x7d64003bbf00 by main thread:
    #0 free tsan_interceptors.cc:477
    #1 __run_exit_handlers <null>:0 (libc.so.6+0x000000050cb7)

  Previous write of size 8 at 0x7d64003bbf00 by thread T78 (mutexes: write M9896):
    #0 calloc tsan_interceptors.cc:449
    #1 ...

llvm-svn: 190989
2013-09-19 04:48:59 +00:00
Dmitry Vyukov c2437ffc23 tsan: consistently use thr instead of cur_thread() in annotations implementation
llvm-svn: 190988
2013-09-19 04:42:25 +00:00
Dmitry Vyukov 1a7ca92006 tsan: refactor internal IgnoreCtl interface
llvm-svn: 190987
2013-09-19 04:39:04 +00:00
Evgeniy Stepanov 91375fd66e [tsan] No-op implementation of AnnotateMemoryIsInitialized.
llvm-svn: 190933
2013-09-18 11:20:31 +00:00
Kostya Serebryany c3d43ca3ec [asan] add a run-time option detect_stack_use_after_return, add verbosity output for fake stack
llvm-svn: 190932
2013-09-18 10:35:12 +00:00
Alexey Samsonov c947eb08b5 [ASan] Don't add SANITIZER_INTERFACE_ATTRIBUTE for internal ASan functions
llvm-svn: 190860
2013-09-17 09:42:03 +00:00
Alexey Samsonov a7f35c06dc [ASan] Enable fake stack test on Mac and Android, as no-instrumentation tests are now fixed
llvm-svn: 190856
2013-09-17 08:40:32 +00:00
Alexey Samsonov 676c109c24 [ASan] Link tests with -pie if ASan runtime uses zero-base shadow
llvm-svn: 190853
2013-09-17 07:50:12 +00:00
Kostya Serebryany 2f5c2be6bd [asan] further speedup use-after-return: simplify deallocation of fake frames. ~ 20% speedup.
llvm-svn: 190852
2013-09-17 07:42:54 +00:00
Nick Lewycky 885136d3b6 Check the function we just called for errors, not an incoming argument. Noticed
by inspection.

llvm-svn: 190828
2013-09-17 00:23:28 +00:00
Alexey Samsonov f71c88910c [ASan] Don't link with pthread on Android
llvm-svn: 190794
2013-09-16 16:51:49 +00:00
Alexey Samsonov 036a5bef2d [ASan] Split ASan unit tests into two different binaries:
(1) instrumented, i.e. compiled and linked with -fsanitize=address
(2) not instrumented, compiled w/o -fsanitize=address and linked with ASan runtime statically.

llvm-svn: 190788
2013-09-16 15:50:53 +00:00
Alexey Samsonov 48e256466a [ASan] Check that getSymbolizer() is defined. Turn magic mapping constants into named variables
llvm-svn: 190787
2013-09-16 15:45:06 +00:00
Alexey Samsonov ad7925e0c1 Minor enhancements for sanitizer_common build rules
llvm-svn: 190786
2013-09-16 15:43:23 +00:00
Evgeniy Stepanov 08d649c024 [msan] Check return value of main: compiler-rt tests.
llvm-svn: 190783
2013-09-16 13:25:26 +00:00
Evgeniy Stepanov 65562f5281 [msan] Fix origin of deallocated memory.
MSan poisons deallocated memory but it used to give it an invalid origin value,
resulting in confusing reports. This change associates deallocation stack trace
with such memory.

Note that MSan does not have quarantine, and use-after-free detection is very
limited.

llvm-svn: 190781
2013-09-16 11:03:31 +00:00
Evgeniy Stepanov 0da35401ce [msan] Add source file:line to stack origin reports.
Test.

llvm-svn: 190690
2013-09-13 12:55:07 +00:00
Evgeniy Stepanov ac5ac34cf7 [msan] Add source file:line to stack origin reports.
Runtime library part.

llvm-svn: 190686
2013-09-13 12:49:13 +00:00
Evgeniy Stepanov 9be91e970e [msan] Intercept tzset.
llvm-svn: 190682
2013-09-13 11:27:38 +00:00
Evgeniy Stepanov 8f0b7feb4c [msandr] Add debugging instructions to README.txt.
llvm-svn: 190680
2013-09-13 11:00:50 +00:00
Kostya Serebryany 3bee8efc95 [asan] Android does not have TLS
llvm-svn: 190669
2013-09-13 08:58:22 +00:00
Alexey Samsonov 70c93d3b1c [ASan] Temporary disable UAR unit test on Android due to https://code.google.com/p/address-sanitizer/issues/detail?id=222
llvm-svn: 190667
2013-09-13 08:07:21 +00:00
Kostya Serebryany 9583b87077 [asan] don't record the class_id in FakeFrame (scratching the last bits of performance)
llvm-svn: 190666
2013-09-13 07:50:44 +00:00
Kostya Serebryany 4117bdbbbc [asan] more performance to FakeStack: a) don't used atomic exchange, instead rely on regular load and store and other signal-safe logic; b) remove allocated_from_size_class_mask_ which is not helping much anyway; Another 10% speedup
llvm-svn: 190664
2013-09-13 07:20:35 +00:00
Kostya Serebryany 43c4493b44 [asan] second attempt to use TLS with fake stack. This time it looks (more) async-signal safe.
llvm-svn: 190663
2013-09-13 06:32:26 +00:00
Kostya Serebryany c19851ab6c [asan] undo the previous commit since TLS hack breaks with signals... :(
llvm-svn: 190662
2013-09-13 06:15:02 +00:00
Kostya Serebryany 096413ba3b [asan] use TLS on Linux to get the FakeStack. Saves 15% performance
llvm-svn: 190661
2013-09-13 06:04:18 +00:00
Kostya Serebryany 77caab4d7b [asan] inline PoisonShadow in FakeStack to get ~10% speedup
llvm-svn: 190660
2013-09-13 05:57:58 +00:00
Peter Collingbourne cdec0a8ad2 [dfsan] Add a few easy functions to the ABI list.
llvm-svn: 190653
2013-09-13 01:38:56 +00:00
Kostya Serebryany 7638aa135e [asan] a bit of performance improvement in fake stack, generalized one test, fixed android build of another test
llvm-svn: 190606
2013-09-12 14:41:10 +00:00
Kostya Serebryany 627ea6391e [asan] add a test for use-after-return and exceptions and fix it. Not 100% sure this is a complete fix, will keep looking for harder cases.
llvm-svn: 190603
2013-09-12 13:25:29 +00:00
Alexander Potapenko 9caa10d0c7 [ASan] Do not build asan_fake_stack_test.cc on OSX until https://code.google.com/p/address-sanitizer/issues/detail?id=222 is fixed.
llvm-svn: 190597
2013-09-12 09:46:56 +00:00
Kostya Serebryany 79d98a851b [asan] limit the size of the fake stack with a reasonable constant. This fixes a failure when the main thread's stack is considered unlimited (very large).
llvm-svn: 190596
2013-09-12 09:08:13 +00:00
Kostya Serebryany 44441cc34b [asan] (part 2) don't lazy-init fake_stack if we only need to check that fake_stack exists (should fix 32-bit builds)
llvm-svn: 190594
2013-09-12 08:47:00 +00:00
Kostya Serebryany 736bd08e05 [asan] don't lazy-init fake_stack if we only need to check that fake_stack exists (should fix 32-bit builds)
llvm-svn: 190593
2013-09-12 08:43:44 +00:00
Kostya Serebryany 628cda7367 [asan] hopefully make the FakeStack async-signal safe, enable the related test
llvm-svn: 190592
2013-09-12 08:34:50 +00:00
Evgeniy Stepanov 58dbe06230 [asan] Fix deadlock in stack unwinder on android/x86.
Fixes PR17116.
Patch by 林作健 (manjian2006 at gmail.com).

llvm-svn: 190590
2013-09-12 08:16:28 +00:00
Kostya Serebryany e8f961e847 [asan] use xchg instead of CAS in FakeStack::Allocate (5% faster for this case)
llvm-svn: 190589
2013-09-12 07:28:42 +00:00
Kostya Serebryany 729c8dc65b [asan] fully re-implement the FakeStack (use-after-return) to make it faster and async-signal-safe. The implementation is not yet complete (see FIXMEs) but the existing tests pass.
llvm-svn: 190588
2013-09-12 07:11:58 +00:00
Bill Wendling a6ec07ce2d Fix typo
llvm-svn: 190543
2013-09-11 19:35:32 +00:00
Daniel Jasper 333e0cb055 Revert r190520 as it wasn't the right fix.
llvm-svn: 190524
2013-09-11 12:53:04 +00:00
Daniel Jasper 2b3f143f23 Add empty virtual destructor...
... as this otherwise triggers -Wnon-virtual-dtor.

llvm-svn: 190520
2013-09-11 12:28:15 +00:00
Alexey Samsonov 4a2447fd81 [TSan] Use --whole-archive around TSan runtime in old TSan makefiles. Fix a Go build
llvm-svn: 190513
2013-09-11 11:06:06 +00:00
Alexey Samsonov 279283c064 [Sanitizer] build sanitizer_common library with -Wglobal-constructors
llvm-svn: 190504
2013-09-11 09:57:15 +00:00
Alexey Samsonov e99a0b9b76 [TSan] Use Clang to compile and link TSan unit tests with TSan runtime
llvm-svn: 190503
2013-09-11 09:56:33 +00:00
Alexey Samsonov d397a9ba1d Fixup for r190410: use lazy initialization for symbolizer as some compilers emit global constructor to setup vptr
llvm-svn: 190414
2013-09-10 16:16:27 +00:00
Timur Iskhodzhanov 92702d8401 [ASan] Remove the explicit function prototypes for intercepted functions on Windows
llvm-svn: 190411
2013-09-10 14:42:15 +00:00
Alexey Samsonov 7a36e6126b [Sanitizer] Refactor symbolization interface: use class instead of several functions. Move some code around to get rid of extra source files
llvm-svn: 190410
2013-09-10 14:36:16 +00:00
Kostya Serebryany 8fc35ca008 [asan] refactor the use-after-return API so that the size class is computed at compile time instead of at run-time. compiler-rt part
llvm-svn: 190406
2013-09-10 13:16:26 +00:00
Evgeniy Stepanov df96e863de [msan] bool -> int to make msan_interface.h C-compatible.
llvm-svn: 190402
2013-09-10 11:04:37 +00:00
Timur Iskhodzhanov 190784b21b [ASan] Don't crash in DescribeHeapAddress if we don't know the current thread's ID
Also make DescribeThread easier to use.
This was firing on Dr.ASan runs, not sure how to repro InvalidTID in a simple test.

llvm-svn: 190392
2013-09-10 08:36:21 +00:00
Eli Friedman abc1a5cb9b Delete unused variables.
llvm-svn: 190383
2013-09-10 03:27:07 +00:00
Peter Collingbourne 0dca2e5ed1 [dfsan] Initial set of DFSAN_OPTIONS flags.
llvm-svn: 190379
2013-09-10 01:51:35 +00:00
Bill Wendling 97c22c3c92 Don't allow a NULL-length file. Try to revert to the buffered version.
llvm-svn: 190359
2013-09-09 22:25:46 +00:00
Evgeniy Stepanov 842fa3f80d [msan] Intercept fstatat / fstatat64.
llvm-svn: 190306
2013-09-09 13:40:41 +00:00
Evgeniy Stepanov cf02f171a9 [sanitizer] Fix PR17138.
strerror_r on OSX returns a positive error code when the errno value is
unknown. Buffer contents are initialized in any case.

llvm-svn: 190295
2013-09-09 08:58:54 +00:00
Evgeniy Stepanov 80cc27857b [sanitizer] Delete extra whitespace.
llvm-svn: 190292
2013-09-09 06:18:07 +00:00
Alexey Samsonov 77029be19a [ASan] fix one more memory leak in test case
llvm-svn: 190277
2013-09-08 14:01:07 +00:00
Alexey Samsonov a302a1affc [Sanitizer] Use generic configs for running sanitizer_common unit tests
llvm-svn: 190276
2013-09-08 13:52:07 +00:00
Alexey Samsonov 071cc9e89d [ASan] turn on leak checking for ASan tests and fix a few discovered leaks
llvm-svn: 190274
2013-09-08 13:23:29 +00:00
Evgeniy Stepanov 73166796a3 [sanitizer] Avoid including any system headers in the system-header-free part of the runtime library.
llvm-svn: 190161
2013-09-06 15:34:17 +00:00
Evgeniy Stepanov 09d33c67e1 [sanitizer] Fix Android build.
Android actually has "__unused" macro defined in <cdefs.h>.

llvm-svn: 190160
2013-09-06 14:58:49 +00:00
Evgeniy Stepanov 5c1035e7fa [sanitizer] A bunch of linux system call handlers.
llvm-svn: 190157
2013-09-06 14:20:01 +00:00
Alexander Potapenko 2a54274c25 [ASan] make the check for NULL more portable.
llvm-svn: 190139
2013-09-06 12:04:37 +00:00
Alexey Samsonov 6985f3f67b Fix compiler warning introduced in r190022
llvm-svn: 190137
2013-09-06 11:08:12 +00:00
Alexey Samsonov 16516b9b00 Migrate ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS to new spelling - ATTRIBUTE_NO_SANITIZE_ADDRESS
llvm-svn: 190136
2013-09-06 11:07:33 +00:00
Kostya Serebryany 895ff83e47 [tsan] make calloc crash instead of returning 0 on overflow (controlled by the allocator_may_return_null flag)
llvm-svn: 190135
2013-09-06 11:04:14 +00:00
Kostya Serebryany 6c5b034d7b [msan] make calloc crash instead of returning 0 on overflow (controlled by the allocator_may_return_null flag)
llvm-svn: 190132
2013-09-06 10:58:55 +00:00
Kostya Serebryany e009ef4ac1 [asan] make calloc crash instead of returning 0 on overflow (controlled by the allocator_may_return_null flag)
llvm-svn: 190128
2013-09-06 09:51:50 +00:00
Kostya Serebryany ada5a7b7ef [sanitizer] make the allocator crash instead of returning 0 on huge size (controlled by the allocator_may_return_null flag)
llvm-svn: 190127
2013-09-06 09:25:11 +00:00
Kostya Serebryany 5e0b2085c8 [tsan] add colors to tsan output
llvm-svn: 190045
2013-09-05 11:23:27 +00:00
Reid Kleckner d483c072af sanitizers: Make sure Visual Studio gets error reports
Visual Studio appears to close stderr before launching a non-console
win32 program.  This means we don't see any sanitizer reports.  If
stderr printing fails, call OutputDebugStringA to get the reports into
the Visual Studio debugger console.

llvm-svn: 190030
2013-09-05 03:19:57 +00:00
Reid Kleckner 0071525492 asan: Add a wcslen interceptor mirroring strlen
Tested on Linux, since I can't build the tests on Windows yet.

llvm-svn: 190022
2013-09-05 01:13:49 +00:00
Kostya Serebryany 2e57127cf7 [asan] add a test that demonstrates why the current use-after-return is not signal-safe
llvm-svn: 189943
2013-09-04 14:39:43 +00:00
Kostya Serebryany 1f13414d45 [asan] make use-after-return handle very deep recursion; fixes 483.xalancbmk in UAR mode
llvm-svn: 189929
2013-09-04 10:59:32 +00:00
Alexey Samsonov 5b2000e4d9 Disable FindPathToBinary test on Android
llvm-svn: 189923
2013-09-04 06:40:48 +00:00
Timur Iskhodzhanov 2eea5894fe [asan] Hopefully un-break the RTL on Windows
llvm-svn: 189821
2013-09-03 15:50:13 +00:00
Timur Iskhodzhanov 2b8d35f8ac [asan] Hopefully fix the RTL build on Windows (part 2)
llvm-svn: 189817
2013-09-03 15:09:21 +00:00
Dmitry Vyukov 4e27d1fdaf tsan: catch races on condition variables
llvm-svn: 189816
2013-09-03 15:04:15 +00:00
Kostya Serebryany 14b7caca13 [asan] attemping to fix the Windows build
llvm-svn: 189814
2013-09-03 14:53:02 +00:00
Timur Iskhodzhanov 8a9f07626f Revert r185536 as it neither fixes any memory leaks, nor is it necessary (see the example from "man pthread_getattr_np")
llvm-svn: 189810
2013-09-03 14:21:21 +00:00
Kostya Serebryany 6bafcd1949 implement PR17059: more visible diagnostics for stack-buffer-overflow
llvm-svn: 189806
2013-09-03 13:58:04 +00:00
Sergey Matveev b9d34443f2 [lsan] Colorize LSan reports.
llvm-svn: 189804
2013-09-03 13:31:03 +00:00