Closed
Description
On Go 1.6, amd64 linux.
My application does a lot of lookups via net.LookupAddr. Sometimes, it gets stuck forever:
goroutine 114 [IO wait]:
net.runtime_pollWait(0x7f4e03df6000, 0x72, 0xc821d94400)
/home/tassadar/go-linux-amd64-bootstrap/src/runtime/netpoll.go:160 +0x60
net.(*pollDesc).Wait(0xc8234f8140, 0x72, 0x0, 0x0)
/home/tassadar/go-linux-amd64-bootstrap/src/net/fd_poll_runtime.go:73 +0x3a
net.(*pollDesc).WaitRead(0xc8234f8140, 0x0, 0x0)
/home/tassadar/go-linux-amd64-bootstrap/src/net/fd_poll_runtime.go:78 +0x36
net.(*netFD).Read(0xc8234f80e0, 0xc821d94400, 0x200, 0x200, 0x0, 0x7f4e03e0e028, 0xc8200b20a0)
/home/tassadar/go-linux-amd64-bootstrap/src/net/fd_unix.go:250 +0x23a
net.(*conn).Read(0xc8200bc080, 0xc821d94400, 0x200, 0x200, 0x200, 0x0, 0x0)
/home/tassadar/go-linux-amd64-bootstrap/src/net/net.go:172 +0xe4
net.(*UDPConn).readDNSResponse(0xc8200bc080, 0xc821b7f100, 0x0, 0x0)
/home/tassadar/go-linux-amd64-bootstrap/src/net/dnsclient_unix.go:52 +0xa5
net.exchange(0xc8223f4393, 0xd, 0xc823484380, 0x1a, 0xc8223f000c, 0x12a05f200, 0x0, 0x0, 0x0)
/home/tassadar/go-linux-amd64-bootstrap/src/net/dnsclient_unix.go:155 +0x4ea
net.tryOneName(0xc821b4e080, 0xc823484380, 0x1a, 0xc8223f000c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
/home/tassadar/go-linux-amd64-bootstrap/src/net/dnsclient_unix.go:181 +0x2f3
net.lookup(0xc823484380, 0x1a, 0xc82348000c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/home/tassadar/go-linux-amd64-bootstrap/src/net/dnsclient_unix.go:318 +0x2eb
net.goLookupPTR(0xc8211d5bc4, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0)
/home/tassadar/go-linux-amd64-bootstrap/src/net/dnsclient_unix.go:528 +0x167
net.lookupAddr(0xc8211d5bc4, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0)
/home/tassadar/go-linux-amd64-bootstrap/src/net/lookup_unix.go:158 +0xfc
net.LookupAddr(0xc8211d5bc4, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0)
/home/tassadar/go-linux-amd64-bootstrap/src/net/lookup.go:183 +0x4c
I tried to follow the code inside go, but there doesn't seem to be a way to set a timeout for this request.