#12010: Incorrect return types for recv() and send() on Windows -----------------------------------+-------------------------------------- Reporter: enolan | Owner: enolan Type: bug | Status: patch Priority: normal | Milestone: Component: Core Libraries | Version: Resolution: | Keywords: Operating System: Windows | Architecture: x86_64 (amd64) Type of failure: Runtime crash | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D2170 Wiki Page: | -----------------------------------+-------------------------------------- Comment (by Tamar Christina <tamar@…>): In [changeset:"1ee47c1bfa35c7be435adaec5c1fa9ec92cc776d/ghc" 1ee47c1b/ghc]: {{{ #!CommitTicketReference repository="ghc" revision="1ee47c1bfa35c7be435adaec5c1fa9ec92cc776d" Use the correct return type for Windows' send()/recv() (Fix #12010) Summary: They return signed 32 bit ints on Windows, even on a 64 bit OS, rather than Linux's 64 bit ssize_t. This means when recv() returned -1 to signal an error we thought it was 4294967295. It was converted to an int, -1 and the buffer was memcpy'd which caused a segfault. Other bad stuff happened with send()s. See also note CSsize in System.Posix.Internals. Add a test for #12010 Test Plan: - GHC testsuite (T12010) - http-conduit test (https://github.com/snoyberg/http-client/issues/191) Reviewers: austin, hvr, bgamari, Phyx Reviewed By: Phyx Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D2170 GHC Trac Issues: #12010 }}} -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12010#comment:2> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler