@@ -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
@@ -357,9 +358,9 @@ forkProcess node proc = modifyMVar (localState node) startProcess
357358 , processThread = tid
358359 , processNode = node
359360 }
360− tid' <- forkIO $ do
361+ tid' <- uninterruptibleMask_ $ forkIOWithUnmask $ \unmask -> do
361362 reason <- Exception.catches
362− (runLocalProcess lproc proc >> return DiedNormal)
363+ (unmask $ runLocalProcess lproc proc >> return DiedNormal)
363364 [ (Exception.Handler (\ex@(ProcessExitException from msg) -> do
364365 mMsg <- unwrapMessage msg :: IO (Maybe String)
365366 case mMsg of