Commit Graph

3099 Commits

Author SHA1 Message Date
Peter Collingbourne 8d27910d7d Rename SpinMutex::AssertHeld to CheckLocked, for consistency with BlockingMutex.
llvm-svn: 193447
2013-10-25 23:03:21 +00:00
Evgeniy Stepanov c0fdb3941c [sanitizer] Disable tmpnam_r interceptor on Mac.
llvm-svn: 193417
2013-10-25 16:22:50 +00:00
Evgeniy Stepanov 94042e1ff2 [sanitizer] Intercept tmpnam, tmpnam_r, tempnam.
llvm-svn: 193415
2013-10-25 15:51:48 +00:00
Evgeniy Stepanov a59daaef3e [msandr] Add NATIVE_EXEC macro for building client for running in DynamoRIO hybrid mode only.
When running application in DynamoRIO hybrid mode only, only uninstrumented
modules will run in DynamoRIO and be instrumented by the client, so we do not
need module table in MSanDR.

Patch by Qin Zhao.

llvm-svn: 193411
2013-10-25 14:57:02 +00:00
Evgeniy Stepanov 2acb2470f9 [sanitizer] Remove pthread_attr_getstackaddr interceptor.
The function is deprecated.

llvm-svn: 193409
2013-10-25 14:27:00 +00:00
Evgeniy Stepanov 7f42c6e007 [sanitizer] Fix Android build.
llvm-svn: 193408
2013-10-25 14:24:31 +00:00
Evgeniy Stepanov 07507ffab4 [msan] Zerofill initstate_r buffer in random_r test.
llvm-svn: 193406
2013-10-25 13:03:20 +00:00
Evgeniy Stepanov c2b6cb0747 [sanitizer] Intercept pthread_attr_get*.
llvm-svn: 193405
2013-10-25 13:01:31 +00:00
Evgeniy Stepanov ced9fede02 [msan] Separate access and origin blocks in msan reports with an extra whiteline.
llvm-svn: 193401
2013-10-25 11:17:54 +00:00
Dmitry Vyukov 53491113f0 tsan: do not crash when apparently bogus fd is passed to e.g. close
some tests test libc/filesystem error handling paths (e.g. close(INT_MAX)),
currently such tests fail
with this change they work as expected

llvm-svn: 193400
2013-10-25 09:45:44 +00:00
Evgeniy Stepanov be9cdbb58c [sanitizer] Intercept random_r.
llvm-svn: 193396
2013-10-25 08:58:13 +00:00
Stephen Hines 7633afc960 Switch __ARM_ARCH_7S__ to __ARM_ARCH_EXT_IDIV__ for use of sdiv/udiv assembly.
__ARM_ARCH_EXT_IDIV__ is the define that ARM is using to indicate the presence
of hardware integer divide (sdiv/udiv). Previously, this code was only being
invoked for processors marked 7S. We now can correctly generate hardware
divides on cortex-a15 devices.

llvm-svn: 193392
2013-10-25 06:26:44 +00:00
Evgeniy Stepanov f312b480e2 [sanitizer] Intercept shmctl.
llvm-svn: 193348
2013-10-24 14:47:34 +00:00
Evgeniy Stepanov 7edb87a92c [msan] Unpoison errno in common interceptors.
llvm-svn: 193343
2013-10-24 13:20:34 +00:00
Evgeniy Stepanov d280ee48e8 [msan] Fix invalid origin copying.
Origin copying may destroy valid origin info. This is caused by
__msan_copy_origin widening the address range to the nearest 4-byte aligned
addresses both on the left and on the right. If the target buffer is
uninitialized and the source is fully initialized, this will result in
overriding valid origin of target buffer with stale (possibly 0) origin of the
source buffer.

With this change the widened origin is copied only if corresponding shadow
values are non zero.

llvm-svn: 193338
2013-10-24 11:56:03 +00:00
Evgeniy Stepanov f2fd459a5b [msan] Change wording in the invalid origin message.
llvm-svn: 193335
2013-10-24 11:52:48 +00:00
Peter Collingbourne 50cb32e614 Introduce an operator new for LowLevelAllocator, and convert most users to it.
llvm-svn: 193308
2013-10-24 06:23:39 +00:00
Alexey Samsonov 857e3ece9b [ASan] ASan can be combined with LSan and UBSan, so export symbol from them as well.
llvm-svn: 193245
2013-10-23 15:36:22 +00:00
Evgeniy Stepanov 55a3ba2281 [sanitizer] Fix OSX build.
llvm-svn: 193244
2013-10-23 15:21:10 +00:00
Evgeniy Stepanov 3e6064f9d2 [sanitizer] Intercept ether_* functions.
llvm-svn: 193241
2013-10-23 13:57:47 +00:00
Dmitry Vyukov 1ec0fd4071 tsan: parse symbolize/external_symbolizer_path common flags
llvm-svn: 193236
2013-10-23 09:00:49 +00:00
Dmitry Vyukov 2346c7a511 tsan: fix linux syscall hooks
the file references non-existent arguments and breaks build

llvm-svn: 193234
2013-10-23 08:40:19 +00:00
Nick Lewycky 993f1f38fd Continue to keep 'SUMMARY: ' prefix in lsan. Whoops!
llvm-svn: 193232
2013-10-23 07:58:11 +00:00
Nick Lewycky 622348e693 Hoist the addition of the prefix "SUMMARY: " from
__sanitizer_report_error_summary to ReportErrorSummary.

llvm-svn: 193231
2013-10-23 07:45:53 +00:00
Nick Lewycky d27d668342 Make sure ASan always emits an error summary if it reports an error.
llvm-svn: 193229
2013-10-23 06:19:04 +00:00
Evgeniy Stepanov 2794c47243 [msan] Drain allocator cache when leaving thread.
llvm-svn: 193163
2013-10-22 14:31:30 +00:00
Evgeniy Stepanov 0229c09d43 [sanitizer] Intercept initgroups.
llvm-svn: 193158
2013-10-22 12:24:48 +00:00
Sergey Matveev fd10073aeb [lsan] When detect_leaks=false, be completely silent.
In particular, don't make a fuss if we're passed a malformed suppressions file,
or if we have trouble identifying ld.so. Also, make LSan interface functions
no-ops in this case.

llvm-svn: 193108
2013-10-21 19:35:00 +00:00
Peter Collingbourne b745eec4e4 Use internal_memset to initialize this variable.
Otherwise, the compiler may use memset in non-optimized builds, which is
forbidden in the nolibc part of the runtime.

llvm-svn: 193098
2013-10-21 18:11:57 +00:00
Kostya Serebryany b773785a59 [asan] count the size of QuarantineBatch in the total Quarantine size; make QuarantineBatch fit into 8K, fix a MSVC compile warning
llvm-svn: 193072
2013-10-21 08:36:10 +00:00
Dmitry Vyukov 1e995d4f3e tsan: fix strerror interceptor (eliminate false positives)
llvm-svn: 193070
2013-10-21 07:40:19 +00:00
Peter Collingbourne 90a0876ae7 Runtime support for the indirect function call checker.
Differential Revision: http://llvm-reviews.chandlerc.com/D1339

llvm-svn: 193060
2013-10-20 21:29:46 +00:00
Peter Collingbourne b714e7e12a [ubsan] Introduce %clangxx substitution for all C++ tests.
llvm-svn: 193059
2013-10-20 21:29:32 +00:00
Kostya Serebryany 8bb5d60235 [asan] fix stack trace printing on Mac
llvm-svn: 192990
2013-10-18 17:46:43 +00:00
Kostya Serebryany f11e485d60 [asan] allocate AsanThreadContext using LowLevelAllocator instead of mmap to save space
llvm-svn: 192980
2013-10-18 15:07:07 +00:00
Kostya Serebryany 9628839869 [asan] reduce the size of AsanThreadContext by storing the stack trace in the stack depot
llvm-svn: 192979
2013-10-18 14:50:44 +00:00
Alexander Potapenko e45ca59fd9 [ASan] fix compilation of sanitizer_platform_limits_posix.cc on OSX.
llvm-svn: 192975
2013-10-18 14:16:54 +00:00
Alexander Potapenko 2fe16d720c [ASan] fix compilation of atexit_stats.cc on OSX
llvm-svn: 192973
2013-10-18 14:12:15 +00:00
Evgeniy Stepanov 78c5730bec [sanitizer] Fix OSX build some more.
llvm-svn: 192967
2013-10-18 12:19:23 +00:00
Evgeniy Stepanov b4e501c6ec [sanitizer] Fix OSX build.
llvm-svn: 192966
2013-10-18 11:26:02 +00:00
Evgeniy Stepanov 3cb9df042e [sanitizer] Move statfs/fstatfs to common interceptors and add statvfs/fstatvfs.
llvm-svn: 192965
2013-10-18 11:14:16 +00:00
Kostya Serebryany e2007b706e [asan] fix a test on Mac
llvm-svn: 192960
2013-10-18 09:42:24 +00:00
Evgeniy Stepanov 70d5abfba2 [sanitizer] Intercept getmntent, getmntent_r.
llvm-svn: 192959
2013-10-18 09:41:43 +00:00
Kostya Serebryany 4bf67d99f4 [asan] fix atexit stats
llvm-svn: 192956
2013-10-18 07:57:59 +00:00
Richard Smith c1d5471291 Make the big array in the UBSan C++ runtime be zero-initialized to dramatically
shrink the binary size of the ubsan runtime.

Also fix a bug where long-running processes could eventually trigger a crash in
the runtime by filling up the cache. I've not found a nice way to add a test for
this crasher; ideas welcome.

llvm-svn: 192931
2013-10-17 22:51:04 +00:00
Alexander Potapenko 1f5573cca2 [ASan] fix assign_large_valloc_to_global.cc to use the correct header for valloc() on OSX.
llvm-svn: 192901
2013-10-17 15:48:24 +00:00
Kostya Serebryany 8e2881d0c2 [asan] fix a failure with ASAN_OPTIONS=verbosity=1:use_sigaltstack=1
llvm-svn: 192892
2013-10-17 13:18:21 +00:00
Evgeniy Stepanov 4bbf273173 [sanitizer] Fix unpoisoning of msghdr::msg_name in recvmsg interceptor.
llvm-svn: 192886
2013-10-17 11:32:30 +00:00
Kostya Serebryany f04ae33106 [asan] Fix a deadlock between asan's allocator and lsan
Summary:
This fixes a deadlock which happens in lsan
on a large memalign-allocated chunk that resides in lsan's root set.

Reviewers: samsonov, earthdok

Reviewed By: earthdok

CC: llvm-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1957

llvm-svn: 192885
2013-10-17 11:18:11 +00:00
Alexey Samsonov bc7c87a8cb [Sanitizer] Move pthread_cond_signal and pthread_cond_broadcast to common interceptors
llvm-svn: 192876
2013-10-17 09:24:03 +00:00
Dmitry Vyukov 333112a439 tsan: merge 2 similar tests into 1
llvm-svn: 192874
2013-10-17 08:27:24 +00:00
Dmitry Vyukov e88dbe5774 tsan: add a test for __tsan_default_options()
llvm-svn: 192873
2013-10-17 08:13:38 +00:00
Will Dietz ece9ede240 Use configured PYTHON in asan lit tests.
llvm-svn: 192870
2013-10-17 05:33:22 +00:00
Dmitry Vyukov cdc971c03c tsan: revert variable name change in test
It works as is with new llvm-symbolizer.

llvm-svn: 192798
2013-10-16 15:57:23 +00:00
Dmitry Vyukov 464ebbd67b tsan: move shadow stack from thread descriptors to fixed addresses
This allows to increase max shadow stack size to 64K,
and reliably catch shadow stack overflows instead of silently
corrupting memory.

llvm-svn: 192797
2013-10-16 15:35:12 +00:00
Kostya Serebryany 442c4e4b1a [asan] introduce run-time flag 'poison_partial'
llvm-svn: 192793
2013-10-16 13:49:01 +00:00
Alexey Samsonov fa103da867 [Sanitizer] Fix lint checker script on Mac
llvm-svn: 192791
2013-10-16 13:38:23 +00:00
Dmitry Vyukov d8f595edf1 tsan: refactor libignore implementation
llvm-svn: 192785
2013-10-16 11:28:12 +00:00
Alexey Samsonov 1fe87e031c [TSan] Extend test for reporting globals with races on them
llvm-svn: 192782
2013-10-16 09:56:17 +00:00
Evgeniy Stepanov ec8ec333f0 [asan] Remove CallocOverflow32 test from asan_test.
The same as with MSan, this test behavior depends on ASAN_OPTIONS, and we've
got a lit_test that covers this.

llvm-svn: 192777
2013-10-16 08:34:31 +00:00
Evgeniy Stepanov 8df08225e5 [msan] Handle origins in __sanitizer_unaligned_(load|store)*.
llvm-svn: 192776
2013-10-16 08:25:13 +00:00
Alexey Samsonov edecc38395 Make some pthread_mutex_* and pthread_cond_* interceptors common.
Reviewers: eugenis, dvyukov

Reviewed By: dvyukov

CC: llvm-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1937

llvm-svn: 192774
2013-10-16 08:20:31 +00:00
Sergey Matveev 27ef175ef0 [lsan] Fix bug when discovering indirectly leaked objects.
If an object contains pointers to itself, that doesn't make it indirectly
leaked. D'oh!

llvm-svn: 192716
2013-10-15 16:00:11 +00:00
Dmitry Vyukov 81f76f6ff7 tsan: introduce __tsan_default_options() function
The function allows to statically setup default values for flags.
The interafece matches what asan/msan provide.

llvm-svn: 192715
2013-10-15 15:58:11 +00:00
Dmitry Vyukov 21e99319f4 tsan: be silent if verbosity=0
Currently tests fail with:
Check failed: 'AAA' == 'AAA ==26017==Could not detach from thread 361395 (errno 3).'

llvm-svn: 192711
2013-10-15 15:35:56 +00:00
Dmitry Vyukov 67a1eef05b tsan: remove __sanitizer_set_report_fd function from public interface
__sanitizer_set_report_path now accepts two special values - stderr and stdout
logging to other file descriptors is not supported anymore,
it's fragile in presence of multiple processes, fork, etc

llvm-svn: 192706
2013-10-15 14:14:34 +00:00
Dmitry Vyukov 7502a3a90c tsan: use verbosity flag in sanitizer_common code directly
now it's available from common_flags()

llvm-svn: 192705
2013-10-15 14:12:26 +00:00
Dmitry Vyukov 45baa00dcb tsan: actually parse verbofity flag
llvm-svn: 192704
2013-10-15 14:00:28 +00:00
Dmitry Vyukov 52ca74ec61 tsan: move verbosity flag to CommonFlags
llvm-svn: 192701
2013-10-15 13:28:51 +00:00
Dmitry Vyukov a55db0a90f tsan: do not leave trash source files in source dir
llvm-svn: 192700
2013-10-15 13:23:29 +00:00
Dmitry Vyukov 347f1a5ee0 tsan: refactor overly-complex logical condition
llvm-svn: 192698
2013-10-15 13:04:42 +00:00
Dmitry Vyukov a72f6a57e9 tsan: fix Go build
llvm-svn: 192696
2013-10-15 13:03:06 +00:00
Dmitry Vyukov f54835f768 tsan: move kernel struct definition from sanitizer_linux.h to sanitizer_platform_limits_posix.h
llvm-svn: 192695
2013-10-15 12:57:59 +00:00
Dmitry Vyukov d534fff6af tsan: do not build llvm from scratch on each presubmit
llvm-svn: 192694
2013-10-15 12:54:50 +00:00
Dmitry Vyukov 7ac0b2b0e1 tsan: use sanitizer::CommonFlags in tsan
llvm-svn: 192692
2013-10-15 12:25:29 +00:00
Evgeniy Stepanov 7a2bbc30a2 [msan] Remove CallocOverflow test.
This behaviour depends on MSAN_OPTIONS.
All interesting combinations are covered by lit_tests/allocator_returns_null.cc.

llvm-svn: 192691
2013-10-15 12:20:16 +00:00
Sergey Matveev 14b9924c7b Clean up StopTheWorld code after r192686.
Remove outdated comments. Also remove code that handled an issue in libc's
sigaction(), which we don't use anymore.

llvm-svn: 192689
2013-10-15 11:54:38 +00:00
Dmitry Vyukov 6f61206f55 tsan: resolve symlinks for called_from_lib suppressions
llvm-svn: 192688
2013-10-15 11:34:59 +00:00
Evgeniy Stepanov 113c646c56 [msan] Implement allocator_may_return_null=1 in MemorySanitizer.
llvm-svn: 192687
2013-10-15 11:33:48 +00:00
Dmitry Vyukov 59c850de6d tsan: implement internal syscall-based versions of sigaction/sigprocmask
use them in stoptheworld
fixes applications that intercept sigaction/sigprocmask

llvm-svn: 192686
2013-10-15 11:31:51 +00:00
Evgeniy Stepanov 3feb458a56 Fix a typo.
llvm-svn: 192685
2013-10-15 11:22:33 +00:00
Alexey Samsonov d2ddcf575d [ASan] Make test from r192581 Linux-only, as wild memory contents is less predictable on Mac
llvm-svn: 192677
2013-10-15 07:54:27 +00:00
Evgeniy Stepanov 251d1e5d21 [msan] Test for r192599.
llvm-svn: 192600
2013-10-14 15:17:05 +00:00
Sergey Matveev 43d90cbd86 [lsan] Support ASan's stack-use-after-return mode in LSan.
Treat the fake stack as live memory.

llvm-svn: 192593
2013-10-14 14:04:50 +00:00
Evgeniy Stepanov 7d7768e032 [msan] Remove a long-outdated comment.
llvm-svn: 192592
2013-10-14 13:30:40 +00:00
Sergey Matveev da9f5e7e7f [asan] Improve thread lifetime tracking on POSIX systems.
Call AsanThread::Destroy() from a late-running TSD destructor.
Previously we called it before any user-registered TSD destructors, which caused
false positives in LeakSanitizer.

llvm-svn: 192585
2013-10-14 12:01:05 +00:00
Evgeniy Stepanov 7aacd9c172 [msan] Intercept strto(d|f|ld)_l and glibc-specific __strto(d|f|ld)_l.
llvm-svn: 192583
2013-10-14 11:52:40 +00:00
Alexey Samsonov df6e6569c0 [ASan] Don't die with internal ASan error on large buffer overflows
Summary:
Out-of-bound access may touch not-yet allocated or already freed
and recycled from quarantine chunks. We should treat this situation as
a "free-range memory access" and avoid printing any data about that
irrelevant chunk (which may be inconsistent).

This should fix https://code.google.com/p/address-sanitizer/issues/detail?id=183

Reviewers: kcc

Reviewed By: kcc

CC: timurrrr, llvm-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1893

llvm-svn: 192581
2013-10-14 11:13:54 +00:00
Evgeniy Stepanov 054d533d8d [msan] Regression test for r192575.
llvm-svn: 192577
2013-10-14 09:53:39 +00:00
Dmitry Vyukov 4314e319ab tsan: allow to override OnPrint() callback in Go runtime
llvm-svn: 192576
2013-10-14 09:52:40 +00:00
Alexey Samsonov c7ae7529e7 [Sanitizer] Return implementation of StackTrace::CopyFrom to header
llvm-svn: 192574
2013-10-14 07:36:10 +00:00
Dmitry Vyukov abc416f326 tsan: allow to override OnFinalize() in front-ends that does not support weak functions (Go)
llvm-svn: 192569
2013-10-14 06:31:03 +00:00
Alexey Samsonov 7f5823844a [Sanitizer] Remove StackTrace::max_depth field
llvm-svn: 192534
2013-10-12 12:40:47 +00:00
Alexey Samsonov c129e65661 [Sanitizer] Turn GetStackTrace() into StackTrace::Unwind()
llvm-svn: 192533
2013-10-12 12:23:00 +00:00
Sergey Matveev 53e61b1acf [sanitizer] Define kPthreadDestructorIterations on POSIX systems.
llvm-svn: 192453
2013-10-11 14:19:14 +00:00
Dmitry Vyukov 6dc0775f1f tsan: catch more races on file descriptors
llvm-svn: 192452
2013-10-11 14:13:11 +00:00
Dmitry Vyukov c9f9ada48d tsan: fix epoll_ctl interceptor
Currently data-race-test unittests fail with the following false positive:


WARNING: ThreadSanitizer: data race (pid=20365)
  Write of size 8 at 0x7da000008050 by thread T54:
    #0 close tsan_interceptors.cc:1483 (racecheck_unittest-linux-amd64-O0+0x0000000eb34a)
    #1 NegativeTests_epoll::Worker2() unittest/posix_tests.cc:1148 (racecheck_unittest-linux-amd64-O0+0x0000000cc6b1)
    #2 MyThread::ThreadBody(MyThread*) unittest/./thread_wrappers_pthread.h:367 (racecheck_unittest-linux-amd64-O0+0x000000097500)

  Previous read of size 8 at 0x7da000008050 by thread T49:
    #0 epoll_ctl tsan_interceptors.cc:1646 (racecheck_unittest-linux-amd64-O0+0x0000000e9fee)
    #1 NegativeTests_epoll::Worker1() unittest/posix_tests.cc:1140 (racecheck_unittest-linux-amd64-O0+0x0000000cc5b5)
    #2 MyThread::ThreadBody(MyThread*) unittest/./thread_wrappers_pthread.h:367 (racecheck_unittest-linux-amd64-O0+0x000000097500)

llvm-svn: 192448
2013-10-11 13:33:22 +00:00
Sergey Matveev 6c5e943953 [sanitizer] Ninja style fix to r192442.
llvm-svn: 192443
2013-10-11 12:15:45 +00:00
Sergey Matveev dc75cf3368 [sanitizer] Move the PTHREAD_DESTRUCTOR_ITERATIONS constant to sanitizer_linux.h.
Add a test.

llvm-svn: 192442
2013-10-11 12:09:49 +00:00
Alexey Samsonov 0cd96165f1 [Sanitizer] StackTrace: kill CopyTo and reimplement CopyFrom
llvm-svn: 192441
2013-10-11 11:14:20 +00:00
Alexey Samsonov 9d8385453b [Sanitizer] Simplify StackTrace::FastUnwindStack interface and fix a bug with one-frame stack traces
llvm-svn: 192428
2013-10-11 09:58:30 +00:00
Dmitry Vyukov 3431b38067 tsan: minor refactoring
Replace duplicate code snippet with function.

llvm-svn: 192357
2013-10-10 16:03:24 +00:00
Dmitry Vyukov fbb194ff34 tsan: add annotations to ignore synchronization operations
The annotations are AnnotateIgnoreSyncBegin/End,
may be useful to ignore some infrastructure synchronization
that introduces lots of false negatives.

llvm-svn: 192355
2013-10-10 15:58:12 +00:00
Sergey Matveev 6f7fb43ad3 [sanitizer] Fix the parent liveness check in StopTheWorld.
Comparing the parent PID with 1 isn't sufficient to ensure the parent is alive,
because of prctl(PR_SET_CHILD_SUBREAPER, ...). Compare with the real parent's
recorded PID instead.

llvm-svn: 192295
2013-10-09 13:36:20 +00:00
Sergey Matveev adef754297 [sanitizer] Fix deadlock in StopTheWorld.
The tracer thread in StopTheWorld could wait on a mutex forever if the parent
process died before unlocking it. Use PR_SET_PDEATHSIG so that the parent would
kill the child in this scenario.

llvm-svn: 192210
2013-10-08 18:01:03 +00:00
Sergey Matveev 398fb700a2 [sanitizer] Do not break the CFI unwind chain in clone().
Fixes build on clang 3.2, which doesn't support cfi_undefined. This change
doesn't seem to break the slow unwinder. Even if it does, the worst thing that
could happen is that we would not see a backtrace when a fatal error happens
under StopTheWorld.

llvm-svn: 192196
2013-10-08 16:38:39 +00:00
Alexey Samsonov 50ec07c196 [TSan] Automatically pick up llvm-symbolizer from PATH, as we do in another sanitizers
llvm-svn: 191954
2013-10-04 13:38:35 +00:00
Alexey Samsonov 12f5e639d6 [TSan] Add ValgrindSlowdown to the list of exported symbols
llvm-svn: 191952
2013-10-04 13:12:05 +00:00
Dmitry Vyukov 513a3a6c0b tsan: fix a bug in pthread_once when called from an ignored library
It must set thr->in_rtl = 0 before executing user callback.

llvm-svn: 191946
2013-10-04 10:27:21 +00:00
Alexey Samsonov f2b811a618 Refactor the usage of strip_path_prefix option and make it more consistent across sanitizers
llvm-svn: 191943
2013-10-04 08:55:03 +00:00
Dmitry Vyukov 302ec7b9bc tsan: add memory_limit_mb flag
The flag allows to bound maximum process memory consumption (best effort).
If RSS reaches memory_limit_mb, tsan flushes all shadow memory.

llvm-svn: 191913
2013-10-03 17:14:35 +00:00
Dmitry Vyukov c967d2f49c asan/msan/tsan: fix broken linux syscalls
Currently the following source code:

u64 NanoTime() {
  kernel_timeval tv = {};
  internal_syscall(__NR_gettimeofday, &tv, 0);
  return (u64)tv.tv_sec * 1000*1000*1000 + tv.tv_usec * 1000;
}

generates the following assembly:

Dump of assembler code for function __sanitizer::NanoTime():
=> 0x00007ff30657d380 <+0>:	lea    -0x10(%rsp),%rdi
   0x00007ff30657d385 <+5>:	xor    %esi,%esi
   0x00007ff30657d387 <+7>:	mov    $0x60,%eax
   0x00007ff30657d38c <+12>:	syscall 
   0x00007ff30657d38e <+14>:	mov    $0,%eax
   0x00007ff30657d393 <+19>:	retq   

with this change:

Dump of assembler code for function __sanitizer::NanoTime():
=> 0x00007faab834f380 <+0>:	movq   $0x0,-0x10(%rsp)
   0x00007faab834f389 <+9>:	movq   $0x0,-0x8(%rsp)
   0x00007faab834f392 <+18>:	lea    -0x10(%rsp),%rdi
   0x00007faab834f397 <+23>:	xor    %esi,%esi
   0x00007faab834f399 <+25>:	mov    $0x60,%eax
   0x00007faab834f39e <+30>:	syscall 
   0x00007faab834f3a0 <+32>:	mov    -0x8(%rsp),%rax
   0x00007faab834f3a5 <+37>:	mov    -0x10(%rsp),%rcx
   0x00007faab834f3aa <+42>:	imul   $0x3e8,%rax,%rdx
   0x00007faab834f3b1 <+49>:	imul   $0x3b9aca00,%rcx,%rax
   0x00007faab834f3b8 <+56>:	add    %rdx,%rax
   0x00007faab834f3bb <+59>:	retq   

llvm-svn: 191908
2013-10-03 16:53:50 +00:00
Dmitry Vyukov 19a1302046 asan/msan: fix "unused function 'OnExit'" warning
llvm-svn: 191904
2013-10-03 15:43:59 +00:00
Dmitry Vyukov fdfb2ade8f asan/msan/tsan: move _exit interceptor to common interceptors
llvm-svn: 191903
2013-10-03 15:22:29 +00:00
Dmitry Vyukov bfe7bb7034 tsan: include lsan into presubmit check
llvm-svn: 191902
2013-10-03 14:56:08 +00:00
Dmitry Vyukov 83ebd022d7 tsan: fix false positive in localtime()
llvm-svn: 191899
2013-10-03 14:12:09 +00:00
Dmitry Vyukov e07dc7d1fe tsan: intercept _exit so that we can override exit status
llvm-svn: 191898
2013-10-03 14:00:46 +00:00
Dmitry Vyukov 5ba736457c tsan: ignore interceptors coming from specified libraries
LibIgnore allows to ignore all interceptors called from a particular set
of dynamic libraries. LibIgnore remembers all "called_from_lib" suppressions
from the provided SuppressionContext; finds code ranges for the libraries;
and checks whether the provided PC value belongs to the code ranges.

Also make malloc and friends interceptors use SCOPED_INTERCEPTOR_RAW instead of
SCOPED_TSAN_INTERCEPTOR, because if they are called from an ignored lib,
then must call our internal allocator instead of libc malloc.

llvm-svn: 191897
2013-10-03 13:37:17 +00:00
Evgeniy Stepanov 364f70c728 [asan] Don't require X86 to build Android runtime.
Patch by Greg Fitzgerald.

llvm-svn: 191883
2013-10-03 08:31:14 +00:00
Evgeniy Stepanov c907a60ffb [sanitizer] Fix localtime and gmtime interceptors to clean tm->tm_zone.
llvm-svn: 191827
2013-10-02 14:30:03 +00:00
Dmitry Vyukov 945397157b tsan: fix the following compiler warning
sanitizer_common_interceptors.inc:1142:53: warning: invoking macro INTERCEPTOR argument 3: empty macro arguments are undefined in ISO C90 and ISO C++98 [enabled by default]

llvm-svn: 191822
2013-10-02 14:04:23 +00:00
Dmitry Vyukov af335eddfe msan: fix compiler warnings about unused variables
llvm-svn: 191821
2013-10-02 14:02:08 +00:00
Dmitry Vyukov 8358c41477 tsan: use ninja instead of make (faster and less output)
llvm-svn: 191819
2013-10-02 12:57:43 +00:00
Nick Lewycky f60d8ae155 This fixme is resolved, fix the test.
llvm-svn: 191810
2013-10-02 05:05:28 +00:00
Nick Lewycky b7aa592c19 Make the InvalidValueData take a SourceLocation.
llvm-svn: 191807
2013-10-02 02:29:47 +00:00
Alexey Samsonov 20abdf69ec Add top-level CMake 'compiler-rt' target to build all compiler-rt libraries
llvm-svn: 191747
2013-10-01 12:52:15 +00:00
Alexey Samsonov 3b54a83d26 [LSan] Rework r191522 - treat allocations with short stack traces as live
llvm-svn: 191662
2013-09-30 10:57:56 +00:00
Alexey Samsonov f56ddf7fd1 [LSan] Don't report leaks with single-frame stack traces
llvm-svn: 191522
2013-09-27 13:54:20 +00:00
Evgeniy Stepanov 01781722b6 [sanitizer] Intercept backtrace, backtrace_symbols.
llvm-svn: 191516
2013-09-27 12:40:23 +00:00
Kostya Serebryany 3c42ce1516 [asan] introduce run-time flag uar_stack_size_log to control the size of FakeStack; don't crash when the fake stack is exhausted, move some code to .cc file
llvm-svn: 191510
2013-09-27 11:37:23 +00:00
Evgeniy Stepanov 022235cf04 [msan] Unpoison argument shadow for C++ module destructors.
Fixes PR17377.

llvm-svn: 191508
2013-09-27 11:32:21 +00:00
Dmitry Vyukov 439a904515 tsan: support allocator_may_return_null flag
Fixes https://code.google.com/p/thread-sanitizer/issues/detail?id=29

llvm-svn: 191482
2013-09-27 02:31:23 +00:00
Dmitry Vyukov e435f94b69 tsan: fix scanf interceptor
llvm-svn: 191445
2013-09-26 18:38:54 +00:00
Evgeniy Stepanov 8f27f6b549 [sanitizer] A bunch of libc interceptors.
sigwait
sigwaitinfo
sigtimedwait
sigemptyset
sigfillset
sigpending
sigprocmask

llvm-svn: 191374
2013-09-25 14:47:43 +00:00
Alexey Samsonov 4fc53e4c06 [Sanitizer] Don't include wordexp.h on Android
llvm-svn: 191358
2013-09-25 07:41:46 +00:00
Evgeniy Stepanov 2761ee0409 [sanitizer] Intercept wordexp.
llvm-svn: 191305
2013-09-24 14:38:22 +00:00
Alexander Potapenko ae49e8c34a [ASan] Fix GCD tests by spinning forever in the main thread.
Since the error is always reported by one of the GCD workers, this will help avoid premature program termination with exit code 0.

llvm-svn: 191294
2013-09-24 12:42:25 +00:00
Evgeniy Stepanov 46901f613b [msan] Test for atomic handling in MSan.
llvm-svn: 191288
2013-09-24 11:21:16 +00:00
Kostya Serebryany 01ff028814 [asan] remove -fsanitize=use-after-return from the tests (this flag now comes with asan by default)
llvm-svn: 191204
2013-09-23 14:34:06 +00:00
Evgeniy Stepanov ce72b2c20b [msan] Fix a WTF in r191196.
llvm-svn: 191197
2013-09-23 13:34:26 +00:00
Evgeniy Stepanov f497bfee76 [msan] Allow nested symbolizer and loader scopes.
llvm-svn: 191196
2013-09-23 13:26:31 +00:00
Timur Iskhodzhanov 7f92aa687a [ASan/Win] Slightly optimize the DLL thunk
llvm-svn: 191190
2013-09-23 11:40:58 +00:00
Timur Iskhodzhanov e2b207cfd2 [ASan] Fix a compile-time warning
llvm-svn: 191189
2013-09-23 11:19:43 +00:00
Timur Iskhodzhanov d6c93c7b4d [ASan] Add DLL thunks for the new stack UAR interface
llvm-svn: 191188
2013-09-23 11:05:41 +00:00
Alexander Potapenko 92b566b0e4 [ASan] Fix the interface test on Darwin.
llvm-svn: 191187
2013-09-23 10:38:23 +00:00
Kostya Serebryany b997c543fc [asan] disable the detect_stack_use_after_return run-time flag by default and enable it explicitly in tests. This is done in preparation to enabling the -fsanitize=use-after-return compile-time flag by default when -fsanitize=address is present.
llvm-svn: 191184
2013-09-23 08:58:14 +00:00
Dmitry Vyukov 2ea2d9cb29 tsan: remove unneeded ___chkstk_ms function from Go runtime
llvm-svn: 191161
2013-09-22 02:49:56 +00:00
Dmitry Vyukov a2c6e1e80f tsan: allow symbolization of non-native PCs, e.g. coming from JIT/JAVA/etc
llvm-svn: 191157
2013-09-22 00:14:57 +00:00
Dmitry Vyukov 76ec1910ac tsan: ignore malloc/free/strdup when called from libjvm
llvm-svn: 191153
2013-09-21 23:44:19 +00:00
Dmitry Vyukov 150406bbf3 tsan: ignore all interceptors coming directly from JVM
llvm-svn: 191152
2013-09-21 23:06:00 +00:00