summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2014-03-19 15:00:38 +0000
committerDmitry Vyukov <dvyukov@google.com>2014-03-19 15:00:38 +0000
commit57bacc08aa69f83c9b9d2c7161a35a41e565192e (patch)
treee7eb23678df74c7d1c77f2c65c61c57023d8740f /test
parentd19b8487b8f2b54eb873c8c356337e2ad7924c65 (diff)
tsan: add test for second_deadlock_stack flag
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@204240 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/tsan/deadlock_detector_stress_test.cc19
1 files changed, 14 insertions, 5 deletions
diff --git a/test/tsan/deadlock_detector_stress_test.cc b/test/tsan/deadlock_detector_stress_test.cc
index a4555a9a3..14b4f8fee 100644
--- a/test/tsan/deadlock_detector_stress_test.cc
+++ b/test/tsan/deadlock_detector_stress_test.cc
@@ -1,5 +1,6 @@
// RUN: %clangxx_tsan %s -o %t -DLockType=PthreadMutex
-// RUN: TSAN_OPTIONS=detect_deadlocks=1 not %t 2>&1 | FileCheck %s
+// RUN: TSAN_OPTIONS=detect_deadlocks=1 not %t 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-NOT-SECOND
+// TSAN_OPTIONS="detect_deadlocks=1 second_deadlock_stack=1" not %t 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-SECOND
// RUN: %clangxx_tsan %s -o %t -DLockType=PthreadSpinLock
// RUN: TSAN_OPTIONS=detect_deadlocks=1 not %t 2>&1 | FileCheck %s
// RUN: %clangxx_tsan %s -o %t -DLockType=PthreadRWLock
@@ -152,6 +153,14 @@ class LockTest {
Lock_1_0();
// CHECK: WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock)
// CHECK: Path: [[M1:M[0-9]+]] => [[M2:M[0-9]+]] => [[M1]]
+ // CHECK: Edge: [[M1]] => [[M2]]
+ // CHECK: #0 pthread_
+ // CHECK-SECOND: #0 pthread_
+ // CHECK-NOT-SECOND-NOT: #0 pthread_
+ // CHECK: Edge: [[M2]] => [[M1]]
+ // CHECK: #0 pthread_
+ // CHECK-SECOND: #0 pthread_
+ // CHECK-NOT-SECOND-NOT: #0 pthread_
// CHECK: Mutex [[M1]] ([[A1]]) created at:
// CHECK: Mutex [[M2]] ([[A2]]) created at:
// CHECK-NOT: WARNING: ThreadSanitizer:
@@ -417,14 +426,14 @@ class LockTest {
fprintf(stderr, "Starting Test16: detailed output test with two locks\n");
// CHECK: Starting Test16
// CHECK: WARNING: ThreadSanitizer: lock-order-inversion
- // CHECK: LockTest::Acquire0
- // CHECK-NEXT: LockTest::Acquire_0_then_1
// CHECK: LockTest::Acquire1
// CHECK-NEXT: LockTest::Acquire_0_then_1
- // CHECK: LockTest::Acquire1
- // CHECK-NEXT: LockTest::Acquire_1_then_0
+ // CHECK-SECOND: LockTest::Acquire0
+ // CHECK-SECOND-NEXT: LockTest::Acquire_0_then_1
// CHECK: LockTest::Acquire0
// CHECK-NEXT: LockTest::Acquire_1_then_0
+ // CHECK-SECOND: LockTest::Acquire1
+ // CHECK-SECOND-NEXT: LockTest::Acquire_1_then_0
Init(5);
Acquire_0_then_1();
U(0); U(1);