Asynchronous exceptions and laziness bugs in Control.Concurrent.QSem/QSemN

Don Stewart dons at galois.com
Fri Mar 19 06:19:49 EDT 2010


This was coincidentaly widely discussed at Galois recently, in two
talks:

 * http://www.galois.com/~dons/talks/strict-concurrency-feb-26-2010/strict-concurrency.pdf
 * http://www.galois.com/~dons/talks/jl-march-2010-async.pdf

So good to see you're looking at these.

bos:
> Looks good to me. Thanks.
> 
> On Thu, Mar 18, 2010 at 1:54 PM, Bas van Dijk <v.dijk.bas at gmail.com> wrote:
> 
>     Hello,
> 
>     after discovering the bugs regarding asynchronous exceptions and
>     laziness in Data.Unique and Control.Concurrent.SampleVar I became a
>     bit suspicious about the other concurrency mechanisms.
> 
>     It looks like Control.Concurrent.Chan is safe because it uses
>     modifyMVar_ internally which performs the necessary block.
> 
>     Control.Concurrent.QSem and QSemN are not alright however! They both
>     suffer the same bugs:
> 
>     * Potential dead-lock due to not blocking asynchronous exceptions.
>     * Potential space-leak because of lazily putting numeric expression in a
>     MVar.
> 
>     The attached patch fixes these bugs.
> 
>     regards,
> 
>     Bas
> 
>     _______________________________________________
>     Libraries mailing list
>     Libraries at haskell.org
>     http://www.haskell.org/mailman/listinfo/libraries
> 
> 
> 

> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://www.haskell.org/mailman/listinfo/libraries



More information about the Libraries mailing list