diff options
author | Simon Marlow <marlowsd@gmail.com> | 2008-05-28 06:39:04 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2008-05-28 06:39:04 +0000 |
commit | 5b726bda032c2015a34131c41d1d338cc759736f (patch) | |
tree | 06d4aa84344c9b205c423ab1d4b46fec102b142c /rts/sm/GCAux.c | |
parent | 78956377551e1433b0a87128c5f88c254ec46b40 (diff) | |
download | haskell-5b726bda032c2015a34131c41d1d338cc759736f.tar.gz |
FIX #2164: check for ThreadRelocated in isAlive()
Diffstat (limited to 'rts/sm/GCAux.c')
-rw-r--r-- | rts/sm/GCAux.c | 5 |
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; } |