diff options
author | Kamil Rytarowski <n54@gmx.com> | 2017-11-29 10:23:59 +0000 |
---|---|---|
committer | Kamil Rytarowski <n54@gmx.com> | 2017-11-29 10:23:59 +0000 |
commit | 17c071e3dcbb1ee6d107a12096ec26750fb816c0 (patch) | |
tree | 2d20c90ed7a5ee621570df0fea0139a0992a34d9 /lib/tsan/rtl/tsan_rtl.h | |
parent | 71ea69d5c99c8ccb761d70ab75b04d746be24aea (diff) | |
download | compiler-rt-17c071e3dcbb1ee6d107a12096ec26750fb816c0.tar.gz |
Defer StartBackgroundThread() and StopBackgroundThread() in TSan
Summary:
NetBSD cannot spawn new POSIX thread entities in early
libc and libpthread initialization stage. Defer this to the point
of intercepting the first pthread_create(3) call.
This is the last change that makes Thread Sanitizer functional
on NetBSD/amd64 without downstream patches.
********************
Testing Time: 64.91s
********************
Failing Tests (5):
ThreadSanitizer-x86_64 :: dtls.c
ThreadSanitizer-x86_64 :: ignore_lib5.cc
ThreadSanitizer-x86_64 :: ignored-interceptors-mmap.cc
ThreadSanitizer-x86_64 :: mutex_lock_destroyed.cc
ThreadSanitizer-x86_64 :: vfork.cc
Expected Passes : 290
Expected Failures : 1
Unsupported Tests : 83
Unexpected Failures: 5
Sponsored by <The NetBSD Foundation>
Reviewers: joerg, eugenis, dvyukov, vitalybuka
Reviewed By: dvyukov
Subscribers: kubamracek, llvm-commits, #sanitizers
Tags: #sanitizers
Differential Revision: https://reviews.llvm.org/D40583
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@319305 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/tsan/rtl/tsan_rtl.h')
-rw-r--r-- | lib/tsan/rtl/tsan_rtl.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/tsan/rtl/tsan_rtl.h b/lib/tsan/rtl/tsan_rtl.h index 96b4e75a3..8967a4b52 100644 --- a/lib/tsan/rtl/tsan_rtl.h +++ b/lib/tsan/rtl/tsan_rtl.h @@ -700,6 +700,7 @@ void PrintCurrentStack(ThreadState *thr, uptr pc); void PrintCurrentStackSlow(uptr pc); // uses libunwind void Initialize(ThreadState *thr); +void MaybeSpawnBackgroundThread(); int Finalize(ThreadState *thr); void OnUserAlloc(ThreadState *thr, uptr pc, uptr p, uptr sz, bool write); |