[Haskell-cafe] Spurious program crashes
joelr1 at gmail.com
Wed Nov 16 13:16:48 EST 2005
I really don't use more FFI than needed to send and receive binary
packets over the network. I don't even use FPS these days and all the
allocaBytes code checks for nullPtr.
My hunch is that this is to do with killing threads that perform FFI
in my timeout code. It would kill blocking connect and hGet
operations for example.
timeout :: forall a.Show a => Int -> IO a -> IO a
timeout secs fun =
do mvar <- newEmptyMVar
tid1 <- forkIO $ do result <- try fun
putMVar mvar $
either (Left . show) (Right . id)
tid2 <- forkIO $ do threadDelay (secs * 1000000)
putMVar mvar (Left "timeout")
maybeResult <- takeMVar mvar
forkIO $ do killThread tid1
case maybeResult of
Right a -> return a
Left b -> fail b
On Nov 16, 2005, at 5:52 PM, Tomasz Zielonka wrote:
> Let me guess - excessive use of unsafe operations (like unsafe*, FFI)?
> I've got an impression that you use them too often for a fresh Haskell
> programmer. Too often for a Haskell programmer in general.
More information about the Haskell-Cafe