
It works fine up to the point when makefdCallback tries to use GHC.Conc.threadWaitRead on fd So my example is simplifed in to this: import System.Posix.IO import GHC.Conc main = do fd <- openFd "/etc/passwd" ReadOnly Nothing defaultFileFlags threadWaitRead fd -- the big bang happens right here. closeFd fd So iteratee is completely innocent and apoligies should be mine - I should not suspect such wonderfull library in the first place. But on the bright side - i'll play with gory details of threadWaitWrite implementation :) -----Original Message-----
Apologies, I won't have time to look at this for a few days. However, could you try a test using the functions from Data.Iteratee.IO.Posix directly? That would help narrow down the issue. I suspect it's either a bug in ghc's IO, or the semantics of some IO functions changed without my noticing.
John L.