summaryrefslogtreecommitdiff
path: root/test/tsan/deadlock_detector_stress_test.cc
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2014-03-21 11:37:43 +0000
committerKostya Serebryany <kcc@google.com>2014-03-21 11:37:43 +0000
commitd1e7977823ff09a14ea58c7dee1d9a38b02e17af (patch)
tree06de8d68ce570e9c808028086cef7b2ec4116d20 /test/tsan/deadlock_detector_stress_test.cc
parent10611387bbadd3bc811b3bced9228b52b0e75dca (diff)
[sanitizer] more human-readable deadlock reports
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@204454 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/tsan/deadlock_detector_stress_test.cc')
-rw-r--r--test/tsan/deadlock_detector_stress_test.cc20
1 files changed, 11 insertions, 9 deletions
diff --git a/test/tsan/deadlock_detector_stress_test.cc b/test/tsan/deadlock_detector_stress_test.cc
index 14b4f8fee..1b7d1f602 100644
--- a/test/tsan/deadlock_detector_stress_test.cc
+++ b/test/tsan/deadlock_detector_stress_test.cc
@@ -152,17 +152,18 @@ class LockTest {
Lock_0_1();
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: Cycle in lock order graph: [[M1:M[0-9]+]] ([[A1]]) => [[M2:M[0-9]+]] ([[A2]]) => [[M1]]
+ // CHECK: Mutex [[M2]] acquired here while holding mutex [[M1]]
// CHECK: #0 pthread_
+ // CHECK-SECOND: Mutex [[M1]] previously acquired by the same thread here:
// CHECK-SECOND: #0 pthread_
+ // CHECK-NOT-SECOND: second_deadlock_stack=1 to get more informative warning message
// CHECK-NOT-SECOND-NOT: #0 pthread_
- // CHECK: Edge: [[M2]] => [[M1]]
+ // CHECK: Mutex [[M1]] acquired here while holding mutex [[M2]]
// CHECK: #0 pthread_
+ // CHECK-SECOND: Mutex [[M2]] previously acquired by the same thread here:
// 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:
}
@@ -178,10 +179,7 @@ class LockTest {
Lock2(1, 2);
Lock2(2, 0);
// CHECK: WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock)
- // CHECK: Path: [[M1:M[0-9]+]] => [[M2:M[0-9]+]] => [[M3:M[0-9]+]] => [[M1]]
- // CHECK: Mutex [[M1]] ([[A1]]) created at:
- // CHECK: Mutex [[M2]] ([[A2]]) created at:
- // CHECK: Mutex [[M3]] ([[A3]]) created at:
+ // CHECK: Cycle in lock order graph: [[M1:M[0-9]+]] ([[A1]]) => [[M2:M[0-9]+]] ([[A2]]) => [[M3:M[0-9]+]] ([[A3]]) => [[M1]]
// CHECK-NOT: WARNING: ThreadSanitizer:
}
@@ -426,12 +424,16 @@ class LockTest {
fprintf(stderr, "Starting Test16: detailed output test with two locks\n");
// CHECK: Starting Test16
// CHECK: WARNING: ThreadSanitizer: lock-order-inversion
+ // CHECK: acquired here while holding mutex
// CHECK: LockTest::Acquire1
// CHECK-NEXT: LockTest::Acquire_0_then_1
+ // CHECK-SECOND: previously acquired by the same thread here
// CHECK-SECOND: LockTest::Acquire0
// CHECK-SECOND-NEXT: LockTest::Acquire_0_then_1
+ // CHECK: acquired here while holding mutex
// CHECK: LockTest::Acquire0
// CHECK-NEXT: LockTest::Acquire_1_then_0
+ // CHECK-SECOND: previously acquired by the same thread here
// CHECK-SECOND: LockTest::Acquire1
// CHECK-SECOND-NEXT: LockTest::Acquire_1_then_0
Init(5);