mask in waitQSem

Simon Marlow marlowsd at gmail.com
Mon Nov 24 10:09:44 UTC 2014


On 14/11/2014 21:23, Yuras Shumovich wrote:
>
> I was reviewing some exception handling code in base library, and I
> found this line:
> https://phabricator.haskell.org/diffusion/GHC/browse/master/libraries/base/Control/Concurrent/QSem.hs;165072b334ebb2ccbef38a963ac4d126f1e08c96$74
>
> Here mask is used, but I looks completely useless for me. waitQSem
> itself should be called with async exceptions masked, otherwise there is
> no way to prevent resource leak.
>
> Do anyone know why mask is used here?

I wrote that code.  It looks like mask_ is important, otherwise an async 
exception might leave the MVar empty, no?  We can't assume that waitQSem 
is always called inside a mask_, so it does its own mask_.

Cheers,
Simon


> I wonder whether an author of the code tried to do something different,
> so there actually can be a bug hidden here. Probably
> uninterruptibleMask_ should be used here? (I don't think so though.)
>
> Thanks,
> Yuras
>
>
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://www.haskell.org/mailman/listinfo/ghc-devs
>


More information about the ghc-devs mailing list