Interruptible foreign calls and uninterruptibleMask

David Feuer david.feuer at gmail.com
Mon Jan 4 04:08:36 UTC 2021


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?


More information about the ghc-devs mailing list