From a662eb67ec59eee6e49f98eda6dfa48f45b9567d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 28 Oct 2015 14:40:11 -0400 Subject: propellor spin --- src/Utility/ConcurrentOutput.hs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Utility/ConcurrentOutput.hs b/src/Utility/ConcurrentOutput.hs index 40e0125e..4d74e090 100644 --- a/src/Utility/ConcurrentOutput.hs +++ b/src/Utility/ConcurrentOutput.hs @@ -85,7 +85,11 @@ takeOutputLock' block = go =<< withLock tryTakeTMVar ( havelock , if block then do + hPutStr stderr "WAITFORPROCESS in lock" + hFlush stderr void $ P.waitForProcess h + hPutStr stderr "WAITFORPROCESS in lock done" + hFlush stderr havelock else do withLock (`putTMVar` orig) @@ -133,7 +137,12 @@ withConcurrentOutput a = a `finally` drain where -- Just taking the output lock is enough to ensure that anything -- that was buffering output has had a chance to flush its buffer. - drain = lockOutput (return ()) + drain = do + hPutStrLn stderr "DRAIN" + hFlush stderr + lockOutput (return ()) + hPutStrLn stderr "DRAIN DONE" + hFlush stderr -- | Displays a string to stdout, and flush output so it's displayed. -- -- cgit v1.2.3