As I understand it, `interruptible` foreign calls aren't affected by
the masking state at all. It seems to me that they really should
respect `uninterruptibleMask`. In particular, within the scope of
`uninterruptibleMask`, if an exception arrives and successfully
interrupts the foreign call, then the `allowInterrupt` call will not
actually deliver the exception, and the failure/EINTR loop (e.g.,
throwIfMinus1Retry) will just perform the interrupted call again. How
I think it should work is that an `interruptible` foreign call should
act exactly like a `safe` foreign call in the scope of
`uninterruptibleMask`. Does this make sense? If so, does it need a GHC
proposal?
_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to