diff --git a/leksah-server.cabal b/leksah-server.cabal
--- a/leksah-server.cabal
+++ b/leksah-server.cabal
@@ -1,5 +1,5 @@
 name: leksah-server
-version: 0.15.0.6
+version: 0.15.0.7
 cabal-version: >= 1.10.2
 build-type: Simple
 license: GPL
@@ -43,7 +43,7 @@
                conduit-extra >=1.0.0.1 && <1.2, resourcet,
                attoparsec-conduit >=1.0.1.2 && <1.2, attoparsec >=0.10.0.3 && <0.14,
                transformers >=0.2.2.0 && <0.5, strict >=0.3.2 && <0.4, text >=0.11.3.1 && <1.3,
-               HTTP >=4000.1.2 && <4000.3
+               HTTP >=4000.1.2 && <4000.3, process >= 1.1 && <1.3
     if (impl(ghc >= 7.10))
        build-depends: haddock-api >=2.16 && <2.17, haddock-library >=1.2.0 && <1.3, bin-package-db
     else
@@ -64,11 +64,6 @@
               else
                  build-depends: haddock >= 2.7.2 && <2.9.3
 
-    if (impl(ghc >= 7.2))
-       build-depends: process >= 1.1 && <1.3
-    else
-       build-depends: process-leksah >=1.0.1.3 && <1.1
-
     if os(windows)
         build-depends: Win32 >=2.2.0.0 && <2.4
         extra-libraries: kernel32 pango-1.0 glib-2.0
@@ -105,7 +100,7 @@
                conduit-extra >=1.0.0.1 && <1.2, resourcet,
                attoparsec-conduit >=1.0.1.2 && <1.2, attoparsec >=0.10.0.3 && <0.14,
                transformers >=0.2.2.0 && <0.5, strict >=0.3.2 && <0.4, text >=0.11.3.1 && <1.3,
-               HTTP >=4000.1.2 && <4000.3
+               HTTP >=4000.1.2 && <4000.3, process >= 1.1 && <1.3
     if (impl(ghc >= 7.10))
        build-depends: haddock-api >=2.16 && <2.17, haddock-library >=1.2.0 && <1.3, bin-package-db
     else
@@ -126,11 +121,6 @@
               else
                  build-depends: haddock >= 2.7.2 && <2.9.3
 
-    if (impl(ghc >= 7.2))
-       build-depends: process >= 1.1 && <1.3
-    else
-       build-depends: process-leksah >=1.0.1.3 && <1.1
-
     if os(windows)
         build-depends: Win32 >=2.2.0.0 && <2.4
         extra-libraries: kernel32 pango-1.0 glib-2.0
@@ -170,12 +160,11 @@
                bytestring >=0.9.0.1 && <0.11, conduit >= 1.0.8 && <1.3,
                conduit-extra >=1.0.0.1 && <1.2, resourcet,
                attoparsec-conduit >=1.0.1.2 && <1.2, attoparsec >=0.10.0.3 && <0.14,
-               transformers >=0.2.2.0 && <0.5, text >=0.11.3.1 && <1.3
+               transformers >=0.2.2.0 && <0.5, text >=0.11.3.1 && <1.3,
+               process >= 1.1 && <1.3
 
-    if (impl(ghc >= 7.2))
-       build-depends: process >= 1.1 && <1.3
-    else
-       build-depends: process-leksah >=1.0.1.3 && <1.1
+    if !os(windows)
+        build-depends: unix >=2.3.1.0 && <2.8
 
     if flag(threaded)
         ghc-options: -threaded
@@ -195,12 +184,8 @@
     hs-source-dirs: tests
     main-is:    TestTool.hs
     build-depends: base >= 4.0.0.0 && <4.9,  hslogger >= 1.0.7 && <1.3,
-               leksah-server == 0.15.0.6,
+               leksah-server == 0.15.0.7,
                HUnit >=1.2 && <1.3, transformers >=0.2.2.0 && <0.5, conduit >= 1.0.8 && <1.3,
-               conduit-extra >=1.0.0.1 && <1.2, resourcet
-
-    if (impl(ghc >= 7.2))
-       build-depends: process >= 1.1 && <1.3
-    else
-       build-depends: process-leksah >=1.0.1.3 && <1.1
+               conduit-extra >=1.0.0.1 && <1.2, resourcet,
+               process >= 1.1 && <1.3
 
diff --git a/src/IDE/Utils/GHCUtils.hs b/src/IDE/Utils/GHCUtils.hs
--- a/src/IDE/Utils/GHCUtils.hs
+++ b/src/IDE/Utils/GHCUtils.hs
@@ -38,6 +38,7 @@
 import Outputable (ppr)
 #if MIN_VERSION_ghc(7,2,0)
 #if MIN_VERSION_ghc(7,6,0)
+import Bag (unitBag)
 #else
 import ErrUtils (printBagOfWarnings)
 #endif
@@ -176,7 +177,11 @@
       case unP P.parseModule (mkPState dflags buf' loc) of {
 
 #if MIN_VERSION_ghc(7,6,0)
-        PFailed span' err -> return (Left (mkPlainErrMsg dflags span' err));
+        PFailed span' err -> do {
+            let {errMsg = mkPlainErrMsg dflags span' err};
+            printBagOfErrors dflags (unitBag errMsg);
+            return (Left errMsg);
+            };
 #else
         PFailed span' err -> return (Left (mkPlainErrMsg span' err));
 #endif
diff --git a/src/IDE/Utils/Tool.hs b/src/IDE/Utils/Tool.hs
--- a/src/IDE/Utils/Tool.hs
+++ b/src/IDE/Utils/Tool.hs
@@ -57,21 +57,12 @@
 import Control.Monad (when, unless)
 import Control.Monad.IO.Class (liftIO, MonadIO)
 import Data.Maybe (maybeToList)
-#ifdef MIN_VERSION_process_leksah
-import IDE.System.Process
-       (proc, waitForProcess, ProcessHandle, createProcess, CreateProcess(..),
-       interruptProcessGroup, runCommand, getProcessExitCode,
-       runProcess, runInteractiveProcess, readProcessWithExitCode,
-       terminateProcess)
-import IDE.System.Process.Internals (StdStream(..))
-#else
 import System.Process
        (showCommandForUser, proc, waitForProcess, ProcessHandle,
         createProcess, CreateProcess(..), interruptProcessGroupOf,
         runCommand, getProcessExitCode, runProcess, runInteractiveProcess,
         readProcessWithExitCode, terminateProcess)
 import System.Process.Internals (StdStream(..))
-#endif
 import qualified Data.Text as T
        (unlines, unwords, null, lines, any, unpack, pack, filter)
 import Control.DeepSeq
@@ -97,6 +88,10 @@
 import Data.Monoid ((<>))
 import Data.Text.IO (hPutStrLn)
 import Control.Arrow (Arrow(..))
+#ifdef MIN_VERSION_unix
+import System.Posix.Signals
+       (emptySignalSet, sigINT, addSignal, unblockSignals)
+#endif
 
 data ToolOutput = ToolInput Text
                 | ToolError Text
@@ -160,6 +155,10 @@
 
 runTool :: MonadIO m => FilePath -> [Text] -> Maybe FilePath -> IO (C.Source m ToolOutput, ProcessHandle)
 runTool executable arguments mbDir = do
+#ifdef MIN_VERSION_unix
+    -- As of GHC 7.10.1 both createProcess and the GHC GC use
+    unblockSignals $ addSignal sigINT emptySignalSet
+#endif
     (Just inp,Just out,Just err,pid) <- createProcess (proc executable (map T.unpack arguments))
         { std_in  = CreatePipe,
           std_out = CreatePipe,
