summaryrefslogtreecommitdiff
path: root/rts/sm/MarkWeak.c
diff options
context:
space:
mode:
Diffstat (limited to 'rts/sm/MarkWeak.c')
-rw-r--r--rts/sm/MarkWeak.c10
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;