From: Bryan C. Mills Date: Mon, 27 Jun 2022 17:58:55 +0000 (-0400) Subject: net: avoid darwin/arm64 platform bug in TestCloseWrite X-Git-Tag: go1.19rc1~51 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=a42573c2f1;p=gostls13.git net: avoid darwin/arm64 platform bug in TestCloseWrite On darwin_arm64, reading from a socket at the same time as the other end is closing it will occasionally hang for 60 seconds before returning ECONNRESET. (This is a macOS issue, not a Go issue.) Work around this condition by adding a brief sleep before the read. Fixes #49352 (we hope). Updates #37795. Change-Id: I4052aec21d311d7370550aea9dd7941f39141133 Reviewed-on: https://go-review.googlesource.com/c/go/+/414534 Run-TryBot: Bryan Mills Auto-Submit: Bryan Mills Reviewed-by: Damien Neil TryBot-Result: Gopher Robot --- diff --git a/src/net/net_test.go b/src/net/net_test.go index 29a2c5d4ba..c297c51fb9 100644 --- a/src/net/net_test.go +++ b/src/net/net_test.go @@ -97,6 +97,17 @@ func TestCloseWrite(t *testing.T) { t.Error(err) return } + + // Workaround for https://go.dev/issue/49352. + // On arm64 macOS (current as of macOS 12.4), + // reading from a socket at the same time as the client + // is closing it occasionally hangs for 60 seconds before + // returning ECONNRESET. Sleep for a bit to give the + // socket time to close before trying to read from it. + if runtime.GOOS == "darwin" && runtime.GOARCH == "arm64" { + time.Sleep(10 * time.Millisecond) + } + if !deadline.IsZero() { c.SetDeadline(deadline) }