summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2008-07-09 13:54:47 +0000
committerSimon Marlow <marlowsd@gmail.com>2008-07-09 13:54:47 +0000
commit366614a9a33b30c2273d2c63b3435259f729314b (patch)
tree6b391bc3a765633f7e12eecea7ace7cda1b11538
parentfb8c1b8048e55c161641c7d9797878f553700d1b (diff)
downloadhaskell-366614a9a33b30c2273d2c63b3435259f729314b.tar.gz
rts_evalStableIO: start the new thread in blocked mode
-rw-r--r--rts/RtsAPI.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/rts/RtsAPI.c b/rts/RtsAPI.c
index 716b4a2f2b..2496af3ea0 100644
--- a/rts/RtsAPI.c
+++ b/rts/RtsAPI.c
@@ -491,6 +491,9 @@ rts_evalStableIO (Capability *cap, HsStablePtr s, /*out*/HsStablePtr *ret)
p = (StgClosure *)deRefStablePtr(s);
tso = createStrictIOThread(cap, RtsFlags.GcFlags.initialStkSize, p);
+ // async exceptions are always blocked by default in the created
+ // thread. See #1048.
+ tso->flags |= TSO_BLOCKEX | TSO_INTERRUPTIBLE;
cap = scheduleWaitThread(tso,&r,cap);
stat = rts_getSchedStatus(cap);