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

Bas van Dijk v.dijk.bas at
Mon Mar 29 04:39:28 EDT 2010

I just created a ticket for this so it's not forgotten:


On Thu, Mar 18, 2010 at 9:54 PM, Bas van Dijk <v.dijk.bas at> 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

More information about the Libraries mailing list