diff options
Diffstat (limited to 'src/Utility')
| -rw-r--r-- | src/Utility/ConcurrentOutput.hs | 11 |
1 files changed, 10 insertions, 1 deletions
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. -- |
