Locking: Add contin tracing to detect deadlocks

We added the code to trace all the contins linked to a particular
Lockvoker, into SerializedAsyncContinuation. This basically
ensures that we'll almost never deal with a deadlock. So cool.
This commit is contained in:
2025-09-27 20:51:20 -04:00
parent 782bcd4567
commit f8bf8083af
4 changed files with 73 additions and 8 deletions
+11 -3
View File
@@ -100,7 +100,14 @@ public:
{ return; }
#ifdef CONFIG_ENABLE_DEBUG_LOCKS
handleLikelyDeadlock(*firstFailedQutexPtr);
Qutex &firstFailedQutex = *firstFailedQutexPtr;
bool isDeadlock = traceContinuationHistoryForDeadlockOn(
firstFailedQutex);
if (!isDeadlock)
{ return; }
handleDeadlock(firstFailedQutex);
#endif
return;
}
@@ -186,12 +193,13 @@ public:
#endif
}
#ifdef CONFIG_ENABLE_DEBUG_LOCKS
bool traceContinuationHistoryForDeadlockOn(Qutex &firstFailedQutex);
/**
* @brief Handle a likely deadlock situation by logging debug information
* @param firstFailedQutex The first qutex that failed acquisition
*/
#ifdef CONFIG_ENABLE_DEBUG_LOCKS
void handleLikelyDeadlock(Qutex& firstFailedQutex);
void handleDeadlock(Qutex& firstFailedQutex);
#endif
private: