Ian Lynagh wrote:
On Mon, Dec 29, 2008 at 05:07:22PM +0100, Bertram Felgenhauer wrote:
Simon Peyton-Jones wrote:
This is odd (to me).  The "permanently bound" stuff applies only to
*synchronous* exceptions, which thread-killing is not.  Simon M will
have more to say when he gets back
This is true when the exception is raised the first time. However, some
exception handling functions like 'bracket' catch the exception, do
their cleanup, and then throw the exception again. This is done in
onException, and goes through throwIO and eventually raiseIO#. At this
point the originally asynchronous exception has become a synchronous
one.

We don't currently have a way to know whether an exception was thrown
asynchronously or not, right?

Should we actually be throwing
data SomeExceptionSync = SomeExceptionSync Bool -- synchronous? SomeException
with catch etc ignoring the Bool, but bracket etc handling it
appropriately?

This ticket describes the problem and a possible solution:

http://hackage.haskell.org/trac/ghc/ticket/2558

Cheers,
        Simon

_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to