What version of Go are you using (go version)?
$ go version
go version devel +14a133f Tue Nov 5 21:16:50 2019 +0000 linux/ppc64le
go version go1.13 gccgo (GCC) 10.0.0 20191105 (experimental) linux/ppc64le
Does this issue reproduce with the latest release?
Yes.
What operating system and processor architecture are you using (go env)?
go env Output
linux/ppc64le power8
What did you do?
Trying to run the golang and gccgo tests for net, net/http, and crypto/tls on a system where someone had done network address translation. See below for example of how it could be reproduced.
What did you expect to see?
PASS
What did you see instead?
~/golang/plain/go/src/net$ ./net.test
--- FAIL: TestConnAndPacketConn (0.50s)
packetconn_test.go:152: read udp 127.0.0.1:37440->127.0.0.1:38376: i/o timeout
--- FAIL: TestUDPServer (110.09s)
server_test.go:320: #0: read udp 127.0.0.1:39312: i/o timeout
server_test.go:320: #1: read udp 127.0.0.1:34202: i/o timeout
server_test.go:320: #2: read udp 127.0.0.1:44195: i/o timeout
server_test.go:320: #7: read udp 127.0.0.1:51421: i/o timeout
server_test.go:320: #8: read udp4 127.0.0.1:53997: i/o timeout
server_test.go:320: #9: read udp4 127.0.0.1:58202: i/o timeout
server_test.go:320: #10: read udp4 127.0.0.1:55888: i/o timeout
server_test.go:320: #15: read udp4 127.0.0.1:36888: i/o timeout
server_test.go:320: #19: read udp4 127.0.0.1:37530: i/o timeout
server_test.go:320: #20: read udp4 127.0.0.1:50267: i/o timeout
server_test.go:320: #21: read udp4 127.0.0.1:57797: i/o timeout
FAIL
~/golang/plain/go/src/net/http$ ./http.test
--- FAIL: TestSetsRemoteAddr_h1 (0.00s)
serve_test.go:1248: Expected local addr; got "9.40.192.157:50248"
--- FAIL: TestSetsRemoteAddr_h2 (0.01s)
serve_test.go:1248: Expected local addr; got "9.40.192.157:42918"
FAIL
~/golang/plain/go/src/crypto/tls$ ./tls.test
--- FAIL: TestDynamicRecordSizingWithStreamCipher (5.00s)
handshake_test.go:287: localPipe: unexpected connection: 9.40.192.157:38236 != 127.0.0.1:38236
handshake_test.go:279: localPipe: timeout waiting for 127.0.0.1:38236
handshake_test.go:287: localPipe: unexpected connection: 9.40.192.157:38238 != 127.0.0.1:38238
handshake_test.go:279: localPipe: timeout waiting for 127.0.0.1:38238
handshake_test.go:287: localPipe: unexpected connection: 9.40.192.157:38240 != 127.0.0.1:38240
handshake_test.go:279: localPipe: timeout waiting for 127.0.0.1:38240
handshake_test.go:287: localPipe: unexpected connection: 9.40.192.157:38242 != 127.0.0.1:38242
handshake_test.go:279: localPipe: timeout waiting for 127.0.0.1:38242
handshake_test.go:287: localPipe: unexpected connection: 9.40.192.157:38244 != 127.0.0.1:38244
handshake_test.go:279: localPipe: timeout waiting for 127.0.0.1:38244
handshake_test.go:293: localPipe: failed to connect: <nil>
..... lots more
We found that doing something like this
sudo iptables -t nat -A POSTROUTING -j MASQUERADE
Will result in these failures and then this
sudo iptables -t nat -F POSTROUTING
makes it work again.
Fails on this system in the same way in gccgo and golang. Doesn't fail on systems with normal network address settings.
What version of Go are you using (
go version)?Does this issue reproduce with the latest release?
Yes.
What operating system and processor architecture are you using (
go env)?go envOutputWhat did you do?
Trying to run the golang and gccgo tests for net, net/http, and crypto/tls on a system where someone had done network address translation. See below for example of how it could be reproduced.
What did you expect to see?
PASS
What did you see instead?
We found that doing something like this
Will result in these failures and then this
makes it work again.
Fails on this system in the same way in gccgo and golang. Doesn't fail on systems with normal network address settings.