logo       

[GHC] #637: Ctrl-Break handler doesn't work in forked threads in "-threaded: msg#00125

lang.haskell.glasgow.bugs

Subject: [GHC] #637: Ctrl-Break handler doesn't work in forked threads in "-threaded" RTS

#637: Ctrl-Break handler doesn't work in forked threads in "-threaded" RTS
----------------------------------+-----------------------------------------
Reporter: bulatz@xxxxxxxxxx | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 6.4.1
Severity: normal | Keywords:
Os: Unknown | Difficulty: Unknown
Architecture: Unknown |
----------------------------------+-----------------------------------------
The following program demonstrates bug in 6.4.1 (6.4.0 was ok).
if you compile it with "-threaded", run and press Ctrl-Break, you will
see message "main.EXE: <stdin>: hGetLine: end of file" and program
blocks (because forked thread is dead). the problem is that installed
ctrl-break handler don't called in forked threads

if you compile program without "-threaded" or with 6.4.0, it works as
expected - pressing Ctrl-Break runs my handler so you will see
"^Break! main.EXE: thread killed" message



import Control.Concurrent
import Control.Exception
import GHC.ConsoleHandler

handleCtrlBreak action = do
myThread <- myThreadId
let onBreak event = do
putStrLn " ^Break!"
killThread myThread
bracket (installHandler$ Catch onBreak) (installHandler) $ \oldHandler
-> do
action

main = do
handleCtrlBreak $ do
x <- newEmptyMVar
forkIO$ do a <- getLine
print a
putMVar x ()
return ()
takeMVar x
return ()

--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/637>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@xxxxxxxxxxx
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise