#4144: Exception: ToDo: hGetBuf - when using custom handle infrastructure -------------------------------+-------------------------------------------- Reporter: AntoineLatter | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: libraries/base | Version: 7.6.1 Resolution: | Keywords: Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: Runtime crash | Difficulty: Testcase: | Blockedby: Blocking: | Related: -------------------------------+-------------------------------------------- Changes (by joeyadams):
* status: closed => new * cc: joeyadams3.14159@… (added) * resolution: fixed => * component: Compiler => libraries/base * version: 6.12.3 => 7.6.1 * architecture: x86_64 (amd64) => Unknown/Multiple * os: MacOS X => Unknown/Multiple Comment: The fix for this is incomplete. I implemented a custom handle to make network I/O interruptible on Windows, but Holger Reinhardt revealed [https://github.com/haskell/network/pull/79#issuecomment-11637676 a case where `Todo: hPutBuf` comes up]. It looks like `bufWrite` (in GHC.IO.Handle.Text), when told to write a chunk that is larger than the buffer size, does a RawIO `writeChunk`, which only works for `FD`. `hGetBufSome` has the same problem. Another problem is that the RawIO methods are sometimes called with a size argument of zero. This can lead to failed system calls and unexpected side effects unless the implementation filters out zero-length calls. Also, if `RawIO.read buf 0` returns 0, the callee might treat it as EOF. -- Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/4144#comment:4> 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