cvs commit: fptools/ghc/compiler/ghci InteractiveUI.hs
RtsExternal.h TSO.h fptools/ghc/rts Linker.c Schedule.c
fptools/ghc/rts/win32 AsyncIO.c ConsoleHandler.c ConsoleHandler.h
IOManager.c IOManager.h fptools/libraries/base/GHC ...
sof at haskell.org
Fri Apr 22 13:00:50 EDT 2005
sof 2005/04/22 10:00:50 PDT
ghc/includes RtsExternal.h TSO.h
ghc/rts Linker.c Schedule.c
ghc/rts/win32 AsyncIO.c ConsoleHandler.c
ConsoleHandler.h IOManager.c IOManager.h
Better handling of I/O request abortions upon throwing an exception
to a Haskell thread. As was, a thread blocked on an I/O request was
simply unblocked, but its corresponding worker thread wasn't notified
that the request had been abandoned.
This manifested itself in GHCi upon Ctrl-C being hit at the prompt -- the
worker thread blocked waiting for input on stdin prior to Ctrl-C would
stick around even though its corresponding Haskell thread had been
thrown an Interrupted exception. The upshot was that the worker would
consume the next character typed in after Ctrl-C, but then just dropping
it. Dealing with this turned out to be even more interesting due to
Win32 aborting any console reads when Ctrl-C/Break events are delivered.
The story could be improved upon (at the cost of portability) by making
the Scheduler able to abort worker thread system calls; as is, requests
are cooperatively abandoned. Maybe later.
Also included are other minor tidyups to Ctrl-C handling under mingw.
Merge to STABLE.
Revision Changes Path
1.200 +5 -1 fptools/ghc/compiler/ghci/InteractiveUI.hs
1.12 +2 -1 fptools/ghc/includes/RtsExternal.h
1.44 +2 -2 fptools/ghc/includes/TSO.h
1.190 +3 -2 fptools/ghc/rts/Linker.c
1.236 +12 -0 fptools/ghc/rts/Schedule.c
1.10 +2 -0 fptools/ghc/rts/win32/AsyncIO.c
1.7 +54 -2 fptools/ghc/rts/win32/ConsoleHandler.c
1.2 +8 -0 fptools/ghc/rts/win32/ConsoleHandler.h
1.13 +115 -28 fptools/ghc/rts/win32/IOManager.c
1.4 +8 -4 fptools/ghc/rts/win32/IOManager.h
1.7 +6 -2 fptools/libraries/base/GHC/ConsoleHandler.hs
More information about the Cvs-ghc