Qutex: Deprecate old gridlock trace; add skeleton new trace

We add the skeleton of a correct history tracer for gridlocks. The
previous history tracer made the incorrect assumption that we would
find the foreign sequence's currently desired LockSet inside of the
lockvoker that it has stored inside of Qutex::currOwner.
This commit is contained in:
2025-09-29 18:14:10 -04:00
parent 2a60fdd9df
commit 8123ec1227
2 changed files with 110 additions and 3 deletions
+9 -2
View File
@@ -116,7 +116,7 @@ public:
bool isDeadlock = traceContinuationHistoryForDeadlockOn(
firstFailedQutex);
bool isGridlock = traceContinuationHistoryForGridlockOn(
bool isGridlock = heuristicallyTraceContinuationHistoryForGridlockOn(
firstFailedQutex);
if (!isDeadlock && !isGridlock)
@@ -222,8 +222,15 @@ public:
{ return isDeadlockLikely(); }
#ifdef CONFIG_ENABLE_DEBUG_LOCKS
struct obsolete {
bool traceContinuationHistoryForGridlockOn(Qutex &firstFailedQutex);
};
bool traceContinuationHistoryForDeadlockOn(Qutex &firstFailedQutex);
bool traceContinuationHistoryForGridlockOn(Qutex &firstFailedQutex);
bool heuristicallyTraceContinuationHistoryForGridlockOn(
Qutex &firstFailedQutex);
bool completelyTraceContinuationHistoryForGridlockOn(
Qutex &firstFailedQutex);
bool traceContinuationHistoryForDeadlock(void)
{
for (auto& lockUsageDesc