@@ -64,9 +64,10 @@ import Control.Exception
6464 , SomeException
6565 , Exception
6666 , throwTo
67+ , uninterruptibleMask_
6768 )
6869import qualified Control.Exception as Exception (Handler(..), catches, finally)
69−import Control.Concurrent (forkIO, myThreadId)
70+import Control.Concurrent (forkIO, forkIOWithUnmask, myThreadId)
7071import Control.Distributed.Process.Internal.StrictMVar
7172 ( newMVar
7273 , withMVar
@@ -356,9 +357,9 @@ forkProcess node proc = modifyMVar (localState node) startProcess
356357 , processThread = tid
357358 , processNode = node
358359 }
359− tid' <- forkIO $ do
360+ tid' <- uninterruptibleMask_ $ forkIOWithUnmask $ \unmask -> do
360361 reason <- Exception.catches
361− (runLocalProcess lproc proc >> return DiedNormal)
362+ (unmask $ runLocalProcess lproc proc >> return DiedNormal)
362363 [ (Exception.Handler (\ex@(ProcessExitException from msg) -> do
363364 mMsg <- unwrapMessage msg :: IO (Maybe String)
364365 case mMsg of