mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-11 20:32:35 -03:00
test: Improve "potential deadlock detected" exception message
This commit is contained in:
parent
35599344c8
commit
bbe9cf4fe4
2 changed files with 6 additions and 2 deletions
|
@ -114,13 +114,17 @@ static void potential_deadlock_detected(const LockPair& mismatch, const LockStac
|
||||||
}
|
}
|
||||||
LogPrintf(" %s\n", i.second.ToString());
|
LogPrintf(" %s\n", i.second.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string mutex_a, mutex_b;
|
||||||
LogPrintf("Current lock order is:\n");
|
LogPrintf("Current lock order is:\n");
|
||||||
for (const LockStackItem& i : s2) {
|
for (const LockStackItem& i : s2) {
|
||||||
if (i.first == mismatch.first) {
|
if (i.first == mismatch.first) {
|
||||||
LogPrintf(" (1)"); /* Continued */
|
LogPrintf(" (1)"); /* Continued */
|
||||||
|
mutex_a = i.second.Name();
|
||||||
}
|
}
|
||||||
if (i.first == mismatch.second) {
|
if (i.first == mismatch.second) {
|
||||||
LogPrintf(" (2)"); /* Continued */
|
LogPrintf(" (2)"); /* Continued */
|
||||||
|
mutex_b = i.second.Name();
|
||||||
}
|
}
|
||||||
LogPrintf(" %s\n", i.second.ToString());
|
LogPrintf(" %s\n", i.second.ToString());
|
||||||
}
|
}
|
||||||
|
@ -128,7 +132,7 @@ static void potential_deadlock_detected(const LockPair& mismatch, const LockStac
|
||||||
tfm::format(std::cerr, "Assertion failed: detected inconsistent lock order at %s:%i, details in debug log.\n", __FILE__, __LINE__);
|
tfm::format(std::cerr, "Assertion failed: detected inconsistent lock order at %s:%i, details in debug log.\n", __FILE__, __LINE__);
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
throw std::logic_error("potential deadlock detected");
|
throw std::logic_error(strprintf("potential deadlock detected: %s -> %s -> %s", mutex_b, mutex_a, mutex_b));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void push_lock(void* c, const CLockLocation& locklocation)
|
static void push_lock(void* c, const CLockLocation& locklocation)
|
||||||
|
|
|
@ -18,7 +18,7 @@ void TestPotentialDeadLockDetected(MutexType& mutex1, MutexType& mutex2)
|
||||||
try {
|
try {
|
||||||
LOCK2(mutex2, mutex1);
|
LOCK2(mutex2, mutex1);
|
||||||
} catch (const std::logic_error& e) {
|
} catch (const std::logic_error& e) {
|
||||||
BOOST_CHECK_EQUAL(e.what(), "potential deadlock detected");
|
BOOST_CHECK_EQUAL(e.what(), "potential deadlock detected: mutex1 -> mutex2 -> mutex1");
|
||||||
error_thrown = true;
|
error_thrown = true;
|
||||||
}
|
}
|
||||||
#ifdef DEBUG_LOCKORDER
|
#ifdef DEBUG_LOCKORDER
|
||||||
|
|
Loading…
Reference in a new issue