#5766: Asynchronous exception bugs in readProcess and readProcessWithExitCode
------------------------------+---------------------------------------------
Reporter: basvandijk | Owner:
Type: bug | Status: new
Priority: normal | Component: libraries/process
Version: 7.2.2 | Keywords:
Os: Unknown/Multiple | Architecture: Unknown/Multiple
Failure: None/Unknown | Testcase:
Blockedby: | Blocking:
Related: |
------------------------------+---------------------------------------------
As [http://www.haskell.org/pipermail/libraries/2012-January/017406.html
explained] on the libraries list, I fixed two asynchronous exception bugs
in `readProcess` and
`readProcessWithExitCode`:
1) If an asynchronous exception was thrown to the thread executing
`readProcess`/`readProcessWithExitCode` somewhere after `createProcess`
was executed, the standard handles would not be closed anymore resulting
in a "handle leak" so to speak.
This is fixed by catching exceptions in the IO processing code and
closing the standard handles when an exception occurs. Additionally, I
also terminate the process and wait for its termination. Does the
latter make sense?
2) If an asynchronous exception was thrown to the stdout/stderr-read-
thread it did not execute the `putMVar` anymore resulting in a dead-lock
when `takeMVar` was executed.
This is fixed by properly catching exception in the read-thread and
propagating them to the parent thread which will then handle them as
described above.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5766>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs