diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-VERSION = 3.4.2
+VERSION = 3.4.3
 
 default :: lib
 
diff --git a/hsshellscript.cabal b/hsshellscript.cabal
--- a/hsshellscript.cabal
+++ b/hsshellscript.cabal
@@ -1,5 +1,5 @@
 Name:                hsshellscript
-Version:             3.4.2
+Version:             3.4.3
 Synopsis:            Haskell for Unix shell scripting tasks
 Description:         A Haskell-library for tasks which are usually done in
                      shell scripts. This includes parsing command line
@@ -12,7 +12,7 @@
 License-file:        LICENSE
 Author:              Volker Wysk
 Maintainer:          hsss@volker-wysk.de
-Copyright:           (c)2004-2011 by Volker Wysk
+Copyright:           (c)2004-2017 by Volker Wysk
 Category:            System
 Build-type:          Simple
 Extra-source-files:  README, manual/*.html, manual/LICENSE, Makefile, test/Makefile, test/*.hs, test/*.c, test/*.chs
diff --git a/src/HsShellScript/ProcErr.chs b/src/HsShellScript/ProcErr.chs
--- a/src/HsShellScript/ProcErr.chs
+++ b/src/HsShellScript/ProcErr.chs
@@ -1859,22 +1859,26 @@
 child :: IO a           -- Action to modify
       -> IO b           -- Never returns
 child io = do
-   (io `finally` flush_outerr)
+   io
       `catches`
       [ Handler $ (\argerror -> do
                       errm $ "In child process:\n" ++ argerror_message argerror
+                      flush_outerr
                       _exit 1
                   )
       , Handler $ (\processstatus -> do
                       errm $ "Process error in child process. Process status = " ++ show ( processstatus :: ProcessStatus )
+                      flush_outerr
                       _exit 1
                   )
       , Handler $ (\(runerror::RunError) -> do
                       errm $ (show_runerror runerror)
+                      flush_outerr
                       _exit 1
                   )
       , Handler $ (\(ioe::IOError) -> do
                       errm ("In child process:\n   " ++ show_ioerror ioe)
+                      flush_outerr
                       _exit 1
                   )
       , Handler $ (\(e::ExitCode) -> do
@@ -1886,13 +1890,16 @@
                             \terminate with _exit (or catch the ExitException yourself). See section\n\"\
                             \Running a Subroutine in a Separate Process\" in the HsShellScript API\n\
                             \documentation. Terminating with _exit " ++ show ec ++ " now.")
+                      flush_outerr
                       _exit ec)
       , Handler $ (\(e::SomeException) -> do
                      errm ("Child process quit with unexpected exception:\n" ++ show e)
+                     flush_outerr
                      _exit 1
                   )
       ]
 
+   flush_outerr
    _exit 0
 
 
diff --git a/test/args.hs b/test/args.hs
--- a/test/args.hs
+++ b/test/args.hs
@@ -76,8 +76,6 @@
            ]
 
 
-
-
 main = mainwrapper $ do
    seq args (return ())
 
diff --git a/test/pipe.hs b/test/pipe.hs
--- a/test/pipe.hs
+++ b/test/pipe.hs
@@ -1,9 +1,12 @@
 import HsShellScript
+import System.IO
 
 main = mainwrapper $ do
 
+   hSetBuffering stdout (BlockBuffering (Just 10000))
+   hSetBuffering stderr (BlockBuffering (Just 10000))
+
    erg <- pipe_from $
-      pipe_to "2\n3\n1" $
-         exec "/usr/bin/sort" []
+         exec "/schwurbel" []
 
    putStrLn erg
