I found my mistake. Through my copy/paste I ended up changing a readMVar into a takeMVar leaving the MVar empty and having the main thread blocking to read it. Changed takeMVar to readMVar in doNothing and everything is working fine now. Sorry for the noise, Olivier.