summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2014-03-17 14:56:04 +0000
committerKostya Serebryany <kcc@google.com>2014-03-17 14:56:04 +0000
commit73557dda0918b7a3e4184a6431118c64f04aefff (patch)
tree7c95d9149ac14634ff769475ae30a633a7b1538e
parent6e756101ca145d7b0a16f2a9eeadc3de38622120 (diff)
[sanitizer] reverse the order of the stack traces printed for every pair of locks in the deadlock report (first print the 'from' node, then print the 'to' node of the deadlock graph)
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@204043 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/sanitizer_common/sanitizer_deadlock_detector.h4
-rw-r--r--test/tsan/deadlock_detector_stress_test.cc8
2 files changed, 6 insertions, 6 deletions
diff --git a/lib/sanitizer_common/sanitizer_deadlock_detector.h b/lib/sanitizer_common/sanitizer_deadlock_detector.h
index a75612a03..637153c90 100644
--- a/lib/sanitizer_common/sanitizer_deadlock_detector.h
+++ b/lib/sanitizer_common/sanitizer_deadlock_detector.h
@@ -231,8 +231,8 @@ class DeadlockDetector {
added_edges, ARRAY_SIZE(added_edges));
for (uptr i = 0; i < n_added_edges; i++) {
if (n_edges_ < ARRAY_SIZE(edges_))
- edges_[n_edges_++] = Edge((u16)added_edges[i], (u16)cur_idx, stk,
- dtls->findLockContext(added_edges[i]));
+ edges_[n_edges_++] = Edge((u16)added_edges[i], (u16)cur_idx,
+ dtls->findLockContext(added_edges[i]), stk);
// Printf("Edge [%zd]: %u %zd=>%zd\n", i, stk, added_edges[i], cur_idx);
}
return n_added_edges;
diff --git a/test/tsan/deadlock_detector_stress_test.cc b/test/tsan/deadlock_detector_stress_test.cc
index a85c2e891..19a9bb920 100644
--- a/test/tsan/deadlock_detector_stress_test.cc
+++ b/test/tsan/deadlock_detector_stress_test.cc
@@ -417,13 +417,13 @@ class LockTest {
fprintf(stderr, "Starting Test16: detailed output test with two locks\n");
// CHECK: Starting Test16
// CHECK: WARNING: ThreadSanitizer: lock-order-inversion
- // CHECK: LockTest::Acquire1
- // CHECK-NEXT: LockTest::Acquire_0_then_1
// CHECK: LockTest::Acquire0
// CHECK-NEXT: LockTest::Acquire_0_then_1
- // CHECK: LockTest::Acquire0
- // CHECK-NEXT: LockTest::Acquire_1_then_0
// CHECK: LockTest::Acquire1
+ // CHECK-NEXT: LockTest::Acquire_0_then_1
+ // CHECK: LockTest::Acquire1
+ // CHECK-NEXT: LockTest::Acquire_1_then_0
+ // CHECK: LockTest::Acquire0
// CHECK-NEXT: LockTest::Acquire_1_then_0
Init(5);
Acquire_0_then_1();