diff options
author | Kostya Serebryany <kcc@google.com> | 2014-03-21 11:37:43 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2014-03-21 11:37:43 +0000 |
commit | d1e7977823ff09a14ea58c7dee1d9a38b02e17af (patch) | |
tree | 06de8d68ce570e9c808028086cef7b2ec4116d20 /test/tsan/deadlock_detector_stress_test.cc | |
parent | 10611387bbadd3bc811b3bced9228b52b0e75dca (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.cc | 20 |
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); |