@@ -64,9 +64,10 @@ import Control.Exception
64 , SomeException
64 , SomeException
65 , Exception
65 , Exception
67+ , uninterruptibleMask_
68import qualified Control.Exception as Exception (Handler(..), catches, finally)
69import qualified Control.Exception as Exception (Handler(..), catches, finally)
69−import Control.Concurrent (forkIO, myThreadId)
70+import Control.Concurrent (forkIO, forkIOWithUnmask, myThreadId)
70import Control.Distributed.Process.Internal.StrictMVar
71import Control.Distributed.Process.Internal.StrictMVar
72 , withMVar
73 , withMVar
@@ -357,9 +358,9 @@ forkProcess node proc = modifyMVar (localState node) startProcess
357 , processThread = tid
358 , processThread = tid
358 , processNode = node
359 , processNode = node
360− tid' <- forkIO $ do
361+ tid' <- uninterruptibleMask_ $ forkIOWithUnmask $ \unmask -> do
361 reason <- Exception.catches
362 reason <- Exception.catches
362− (runLocalProcess lproc proc >> return DiedNormal)
363+ (unmask $ runLocalProcess lproc proc >> return DiedNormal)
363 [ (Exception.Handler (\ex@(ProcessExitException from msg) -> do
364 [ (Exception.Handler (\ex@(ProcessExitException from msg) -> do
364 mMsg <- unwrapMessage msg :: IO (Maybe String)
365 mMsg <- unwrapMessage msg :: IO (Maybe String)
365 case mMsg of
366 case mMsg of