Don't interrupt when task blocks exceptions, don't immediately start exception.
[ghc-hetmet.git] / rts / sm / MarkWeak.c
index e65c176..aadd575 100644 (file)
@@ -270,8 +270,11 @@ static rtsBool tidyThreadList (generation *gen)
         
         // 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) {