#7353: Make system IO interruptible on Windows
---------------------------------+------------------------------------------
    Reporter:  joeyadams         |       Owner:                             
        Type:  bug               |      Status:  new                        
    Priority:  normal            |   Milestone:  7.8.1                      
   Component:  libraries/base    |     Version:  7.6.1                      
    Keywords:                    |          Os:  Windows                    
Architecture:  Unknown/Multiple  |     Failure:  Incorrect result at runtime
  Difficulty:  Unknown           |    Testcase:                             
   Blockedby:                    |    Blocking:                             
     Related:                    |  
---------------------------------+------------------------------------------
Changes (by simonmar):

  * difficulty:  => Unknown
  * component:  Runtime System => libraries/base
  * milestone:  => 7.8.1


Comment:

 There are a few options:

  * maybe `foreign import ccall interruptible` will work for the FFI calls
 in the network package.  It causes `CancelSynchronousIo()` to be called
 when the thread is the target of an exception, but I have no idea whether
 this will actually work to interrupt the operation or not.

  * make a version of `threadWaitRead` that works for sockets.  This is
 easy; see #5797.  However, this won't necessarily cancel the operation
 when an exception is raised, you'll need to arrange that separately
 somehow.

  * Implement an IO manager for Windows.  This is of course the best
 solution, but it's a lot of work.  You'd need to bind all the appropriate
 APIs in the base package, maybe copying or moving bits of the Win32
 package into base.  Ideally instead of FDs in the IO library we would use
 Win32 `HANDLE`s, so there would need to be Win32 replacements for
 `GHC.IO.FD` and `GHC.IO.Handle.FD`.  This would have the nice effect of
 eliminating both the mingw and msvcrt layers from the IO library on Win32.
 Then the IO manager can use Win32 overlapped I/O.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7353#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler

_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to