From 42687af2c43217b778a64cf836a4c63a99a5243f Mon Sep 17 00:00:00 2001 From: simonmar Date: Fri, 11 Nov 2005 10:37:35 +0000 Subject: [PATCH] [project @ 2005-11-11 10:37:35 by simonmar] Fix bugs in new signal handling machinery --- GHC/Conc.lhs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/GHC/Conc.lhs b/GHC/Conc.lhs index f1b4d61..c447060 100644 --- a/GHC/Conc.lhs +++ b/GHC/Conc.lhs @@ -619,8 +619,9 @@ service_loop wakeup readfds writefds ptimeval old_reqs old_delays = do s <- peek p if (s == 0xff) then return () - else do sp <- peekElemOff handlers (fromIntegral s) - quickForkIO (deRefStablePtr sp) + else do handler_tbl <- peek handlers + sp <- peekElemOff handler_tbl (fromIntegral s) + quickForkIO (do io <- deRefStablePtr sp; io) return () takeMVar prodding @@ -646,7 +647,7 @@ prodServiceThread = do else return () putMVar prodding True -foreign import ccall "&signal_handlers" handlers :: Ptr (StablePtr (IO ())) +foreign import ccall "&signal_handlers" handlers :: Ptr (Ptr (StablePtr (IO ()))) foreign import ccall "setIOManagerPipe" c_setIOManagerPipe :: CInt -> IO () -- 1.7.10.4