Age | Commit message (Collapse) | Author |
|
Summary:
Add atomic verification to ensure that Thread is Joined after marking it
Finished.
It is required for NetBSD in order to prevent Thread Exited/Joined race,
that may occur when native system libpthread(3) cannot be reliably traced
in a way to guarantee that the mentioned events happen one after another.
This change fixes at least TSan and LSan on NetBSD.
Sponsored by <The NetBSD Foundation>
Reviewers: joerg, dvyukov, vitalybuka
Reviewed By: dvyukov
Subscribers: llvm-commits, kubamracek, #sanitizers
Tags: #sanitizers
Differential Revision: https://reviews.llvm.org/D40294
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@319004 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
We seem to assume that OS-provided thread IDs are either uptr or int, neither of which is true on Darwin. This introduces a tid_t type, which holds a OS-provided thread ID (gettid on Linux, pthread_threadid_np on Darwin, pthread_self on FreeBSD).
Differential Revision: https://reviews.llvm.org/D31774
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@300473 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
When dealing with GCD worker threads, TSan currently prints weird things like "created by thread T-1" and "[failed to restore the stack]" in reports. This patch avoids that and instead prints "Thread T3 (...) is a GCD worker thread".
Differential Revision: https://reviews.llvm.org/D29103
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@293882 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
lib/sanitizer_common headers, unify closing inclusion guards. Patch by Eugene Zelenko
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@248816 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
See http://reviews.llvm.org/D4794
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@216900 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Vector clocks is the most actively allocated object in tsan runtime.
Current internal allocator is not scalable enough to handle allocation
of clocks in scalable way (too small caches). This changes transforms
clocks to 2-level array with 512-byte blocks. Since all blocks are of
the same size, it's possible to cache them more efficiently in per-thread caches.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@214912 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
the new optimizations break when thread ids gets reused (clocks go backwards)
add the necessary tests as well
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@206035 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@193602 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@182728 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
dtors may be a problem for us, as sanitizer runtime should not generally assume libstdc++ presence.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@177860 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
than new thread is created)
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@177394 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Clang does not like classes with virtual functions but w/o virtual dtor.
Go does not like libstdc++ (operator delete).
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@177267 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@177260 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
members below methods.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@177143 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Patch by Manuel Klimek!
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@177132 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
tests. Use -Werror=sign-compare when building them.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@177077 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
class holds basic thread bookkeeping logic and allows specific sanitizer runtimes to create thread contexts and mark threads as created/running/joined etc. The class is based on the way we currently store thread contexts in TSan.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@177074 91177308-0d34-0410-b5e6-96231b3b80d8
|