diff options
Diffstat (limited to 'rts/sm/MarkWeak.c')
-rw-r--r-- | rts/sm/MarkWeak.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/rts/sm/MarkWeak.c b/rts/sm/MarkWeak.c index 99383ebd42..74c195b3d4 100644 --- a/rts/sm/MarkWeak.c +++ b/rts/sm/MarkWeak.c @@ -219,6 +219,16 @@ static bool resurrectUnreachableThreads (generation *gen, StgTSO **resurrected_t // it to END_TSO_QUEUE. The copying GC doesn't currently care, but // the compacting GC does, see #17785. t->global_link = END_TSO_QUEUE; + + // also delete from the global tso list + if (t->tso_link_prev != END_TSO_QUEUE){ + t->tso_link_prev->tso_link_next = t->tso_link_next; + } + if (t->tso_link_next != END_TSO_QUEUE){ + t->tso_link_next->tso_link_prev = t->tso_link_prev; + } + t->tso_link_prev = END_TSO_QUEUE; + t->tso_link_next = END_TSO_QUEUE; continue; default: tmp = t; |