File tree Expand file tree Collapse file tree 1 file changed +8
-0
lines changed Expand file tree Collapse file tree 1 file changed +8
-0
lines changed Original file line number Diff line number Diff line change @@ -237,6 +237,14 @@ inline WaitEventLink *ThreadQueue::DequeueThread(SyncBlock *psb)
237
237
238
238
if (pLink)
239
239
{
240
+ // Sometimes the SList is corrupted causing the EE to deadlock as referenced in /dotnet/runtime/issues/115794
241
+ // When that happens managed threads will remain in a suspended state causing the application to hang
242
+ // indefinitely.
243
+ // To mitigate this issue, when the next link points to itself, de-reference the next link
244
+ // TODO : find which code is responsible for allowing the situation to happen
245
+ if ( psb->m_Link .m_pNext == pLink->m_pNext )
246
+ pLink->m_pNext = NULL ;
247
+
240
248
psb->m_Link .m_pNext = pLink->m_pNext ;
241
249
#ifdef _DEBUG
242
250
pLink->m_pNext = (SLink *)POISONC;
You can’t perform that action at this time.
0 commit comments