18 Mar
2010
18 Mar
'10
4:54 p.m.
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