X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2Fsm%2FMarkWeak.c;h=72f0ade797ef087956f218dd2d105ed066411358;hb=26f4bfc82f2b2359259578e9c54d476fc2de650f;hp=e65c176c0a2027bf2628f042360df276b706a612;hpb=5d52d9b64c21dcf77849866584744722f8121389;p=ghc-hetmet.git diff --git a/rts/sm/MarkWeak.c b/rts/sm/MarkWeak.c index e65c176..72f0ade 100644 --- a/rts/sm/MarkWeak.c +++ b/rts/sm/MarkWeak.c @@ -260,18 +260,15 @@ static rtsBool tidyThreadList (generation *gen) } ASSERT(get_itbl(t)->type == TSO); - if (t->what_next == ThreadRelocated) { - next = t->_link; - *prev = next; - continue; - } - next = t->global_link; // if the thread is not masking exceptions but there are // pending exceptions on its queue, then something has gone - // wrong: + // wrong. However, pending exceptions are OK if there is an + // FFI call. ASSERT(t->blocked_exceptions == END_BLOCKED_EXCEPTIONS_QUEUE + || t->why_blocked == BlockedOnCCall + || t->why_blocked == BlockedOnCCall_Interruptible || (t->flags & TSO_BLOCKEX)); if (tmp == NULL) {