[Haskell-cafe] Why do "unsafe" foreign calls block other threads?