So my theory is correct, but it is already fixed in 8.2. Nice! Thank you for clarification!
Yuras. 23-11-2017, Чцв а 10:20 -0500, Ben Gamari напісаў: > Yuras Shumovich <[email protected]> writes: > > > Hello, > > > > Hello, > > Sorry for the late reply; this required a bit of reflection. The > invariants surrounding the suspension of ST computations is a rather > delicate and poorly documented area. > > I believe the asynchronous exception case which you point out is > precisely #13615. The solution there was, as David suggests, ensure > that > no resulting thunk could be entered more than once by a very strict > blackholing protocol. Note that this isn't normal "eager" blackholing > protocol, which still might allow multiple entrancy. It's rather a > more > strict variant, requiring two atomic operations. > > I can't be certain that there aren't more cases like this, but I > suspect > not since most asynchronous suspensions where the resulting thunk > might > "leak" back into the program go through the raiseAsync codepath that > was > fixed in #13615. > > Cheers, > > - ben > _______________________________________________ ghc-devs mailing list [email protected] http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
