Skip to content
  • sof's avatar
    [project @ 2005-04-22 17:00:48 by sof] · ecb1a539
    sof authored
    [mingw only]
    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.
    ecb1a539