import Control.Concurrent import Control.Exception -- !!! test that deadlock is raised as an exception properly main = do r <- Control.Exception.try $ do m <- newEmptyMVar takeMVar m return () print (r::Either SomeException ())