[GHC] #8006: Asynchronous exception rethrown synchronously inside runStmt
GHC
ghc-devs at haskell.org
Fri Jun 28 12:12:49 CEST 2013
#8006: Asynchronous exception rethrown synchronously inside runStmt
---------------------------------+------------------------------------------
Reporter: edsko | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.6.3
Keywords: | Os: Unknown/Multiple
Architecture: Unknown/Multiple | Failure: None/Unknown
Difficulty: Unknown | Testcase:
Blockedby: | Blocking:
Related: |
---------------------------------+------------------------------------------
Comment(by edsko):
"I don't think an asynch exn should ever become the value of a thunk." --
yes, that would be ideal. Unfortunately, that's very hard to do, because
there is no way to install an exception handler for synchronous exceptions
only -- in particular, the almost-primitive `GHC.IO.catchException`
catches all exceptions, does a runtime type check, and rethrows the
exception using `raiseIO#` if the types don't match. This means that
asynchronous exceptions become synchronous, and hence can become the value
of a thunk. Manually re-throwing the exception using `throwTo` is not
really a solution either (at least, not a generic solution, though
sometimes a possible workaround), as then we need to decide in user code
how to resume the thread. The ghc bugs I cite at the start of the issue
are all related to this problem.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/8006#comment:4>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list