diff options
author | Simon Marlow <marlowsd@gmail.com> | 2008-07-09 13:54:47 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2008-07-09 13:54:47 +0000 |
commit | 366614a9a33b30c2273d2c63b3435259f729314b (patch) | |
tree | 6b391bc3a765633f7e12eecea7ace7cda1b11538 /rts/RtsAPI.c | |
parent | fb8c1b8048e55c161641c7d9797878f553700d1b (diff) | |
download | haskell-366614a9a33b30c2273d2c63b3435259f729314b.tar.gz |
rts_evalStableIO: start the new thread in blocked mode
Diffstat (limited to 'rts/RtsAPI.c')
-rw-r--r-- | rts/RtsAPI.c | 3 |
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); |