summaryrefslogtreecommitdiff
path: root/rts/sm/GCAux.c
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2008-05-28 06:39:04 +0000
committerSimon Marlow <marlowsd@gmail.com>2008-05-28 06:39:04 +0000
commit5b726bda032c2015a34131c41d1d338cc759736f (patch)
tree06d4aa84344c9b205c423ab1d4b46fec102b142c /rts/sm/GCAux.c
parent78956377551e1433b0a87128c5f88c254ec46b40 (diff)
downloadhaskell-5b726bda032c2015a34131c41d1d338cc759736f.tar.gz
FIX #2164: check for ThreadRelocated in isAlive()
Diffstat (limited to 'rts/sm/GCAux.c')
-rw-r--r--rts/sm/GCAux.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/rts/sm/GCAux.c b/rts/sm/GCAux.c
index 825d0f9a3e..48179f7920 100644
--- a/rts/sm/GCAux.c
+++ b/rts/sm/GCAux.c
@@ -62,6 +62,11 @@ isAlive(StgClosure *p)
// large objects use the evacuated flag
if (bd->flags & BF_LARGE) {
+ if (get_itbl(q)->type == TSO &&
+ ((StgTSO *)p)->what_next == ThreadRelocated) {
+ p = (StgClosure *)((StgTSO *)p)->_link;
+ continue;
+ }
return NULL;
}