
I am running ghc 6.4.2 on a Win32 machine. I'm using hs-plugins in one thread and a simple getLine loop in another. It appears that getLine blocks the hs-plugins thread on Win32 (this has been verified to work fine on freeBSD). I've tried various combinations of -threaded flag and forkIO/forkOS and always get the undesireable result. Below is the minimal test case. module Main where import Control.Concurrent import System.Plugins import System.IO -- Main loop main = do hSetBuffering stdout NoBuffering forkIO blah test <- getLine putStrLn test blah = do contents <- loadPlugin "Hello" putStrLn contents loadPlugin path = do status <- pdynload (path ++ ".o") [] [] "Prelude.String" "myTestSym" case status of (LoadSuccess _ res) -> return res (LoadFailure errors) -> return $ concat errors --------------------- Hello.hs -------------------- module Hello where myTestSym :: String myTestSym = "Hello 2!" Thanks!