diff options
| author | Hennadii Stepanov <[email protected]> | 2020-06-22 18:21:12 +0300 |
|---|---|---|
| committer | Hennadii Stepanov <[email protected]> | 2020-06-22 18:24:29 +0300 |
| commit | bbe9cf4fe4ff9a8d1ea557fb763c76100db07679 (patch) | |
| tree | 79a3d276e11e188e24149ec1b08a9383cb951ea8 /src/sync.cpp | |
| parent | Fix mistakenly swapped "previous" and "current" lock orders (diff) | |
| download | discoin-bbe9cf4fe4ff9a8d1ea557fb763c76100db07679.tar.xz discoin-bbe9cf4fe4ff9a8d1ea557fb763c76100db07679.zip | |
test: Improve "potential deadlock detected" exception message
Diffstat (limited to 'src/sync.cpp')
| -rw-r--r-- | src/sync.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/sync.cpp b/src/sync.cpp index e7ea73148..e69ff090c 100644 --- a/src/sync.cpp +++ b/src/sync.cpp @@ -114,13 +114,17 @@ static void potential_deadlock_detected(const LockPair& mismatch, const LockStac } LogPrintf(" %s\n", i.second.ToString()); } + + std::string mutex_a, mutex_b; LogPrintf("Current lock order is:\n"); for (const LockStackItem& i : s2) { if (i.first == mismatch.first) { LogPrintf(" (1)"); /* Continued */ + mutex_a = i.second.Name(); } if (i.first == mismatch.second) { LogPrintf(" (2)"); /* Continued */ + mutex_b = i.second.Name(); } 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__); 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) |