[sanitizer] a bit more informative deadlock detector report (still lots to improve)
llvm-svn: 204115
This commit is contained in:
parent
42b233a836
commit
5c0171b811
|
|
@ -231,17 +231,25 @@ void PrintReport(const ReportDesc *rep) {
|
|||
Printf("%s", d.EndWarning());
|
||||
|
||||
if (rep->typ == ReportTypeDeadlock) {
|
||||
Printf(" path: ");
|
||||
Printf(" Path: ");
|
||||
CHECK_GT(rep->mutexes.Size(), 0U);
|
||||
CHECK_EQ(rep->mutexes.Size() * 2, rep->stacks.Size());
|
||||
for (uptr i = 0; i < rep->mutexes.Size(); i++)
|
||||
PrintMutexShort(rep->mutexes[i], " => ");
|
||||
PrintMutexShort(rep->mutexes[0], "\n");
|
||||
}
|
||||
|
||||
for (uptr i = 0; i < rep->stacks.Size(); i++) {
|
||||
if (i)
|
||||
Printf(" and:\n");
|
||||
PrintStack(rep->stacks[i]);
|
||||
PrintMutexShort(rep->mutexes[0], "\n\n");
|
||||
for (uptr i = 0; i < rep->mutexes.Size(); i++) {
|
||||
Printf(" Edge: ");
|
||||
PrintMutexShort(rep->mutexes[i], " => ");
|
||||
PrintMutexShort(rep->mutexes[(i+1) % rep->mutexes.Size()], "\n");
|
||||
PrintStack(rep->stacks[2*i]);
|
||||
PrintStack(rep->stacks[2*i+1]);
|
||||
}
|
||||
} else {
|
||||
for (uptr i = 0; i < rep->stacks.Size(); i++) {
|
||||
if (i)
|
||||
Printf(" and:\n");
|
||||
PrintStack(rep->stacks[i]);
|
||||
}
|
||||
}
|
||||
|
||||
for (uptr i = 0; i < rep->mops.Size(); i++)
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@ 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: Path: [[M1:M[0-9]+]] => [[M2:M[0-9]+]] => [[M1]]
|
||||
// CHECK: Mutex [[M1]] ([[A1]]) created at:
|
||||
// CHECK: Mutex [[M2]] ([[A2]]) created at:
|
||||
// CHECK-NOT: WARNING: ThreadSanitizer:
|
||||
|
|
@ -169,7 +169,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: 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:
|
||||
|
|
|
|||
Loading…
Reference in New Issue