Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

runtime: epoll hangs in net/http tests #5103

Closed
bradfitz opened this issue Mar 21, 2013 · 1 comment
Closed

runtime: epoll hangs in net/http tests #5103

bradfitz opened this issue Mar 21, 2013 · 1 comment

Comments

@bradfitz
Copy link
Contributor

I think we might have an netpoll bug still.

On Linux-amd64, at hg revision a78557354dc0 with 7799047 (#4) patched in, I get
occasional net/http test runs (in full, not -short mode).

The test that hangs tends to always the same one, but it passes fine on its own.  It
only hangs if some tests before it run.

If I SIGQUIT it, I see the following stacks:

$ go test -v net/http
....
....
--- PASS: TestTransportNoHost (0.00 seconds)
=== RUN TestTransportSocketLateBinding
^\SIGQUIT: quit
PC=0x4245a3


goroutine 1 [chan receive]:
testing.RunTests(0x788468, 0x8ed880, 0x96, 0x96, 0xc2000e0d00, ...)
        /usr/local/google/home/bradfitz/go/src/pkg/testing/testing.go:427 +0x88e
testing.Main(0x788468, 0x8ed880, 0x96, 0x96, 0x8e6600, ...)
        /usr/local/google/home/bradfitz/go/src/pkg/testing/testing.go:358 +0x8a
main.main()
        net/http/_test/_testmain.go:365 +0x9a

goroutine 2 [syscall]:

goroutine 254 [finalizer wait]:

goroutine 52252 [select]:
net/http.(*persistConn).roundTrip(0xc200504200, 0xc200bae780, 0xc200504200, 0x0, 0x0,
...)
        /usr/local/google/home/bradfitz/go/src/pkg/net/http/transport.go:846 +0x6c7
net/http.(*Transport).RoundTrip(0xc200504280, 0xc20052ed00, 0xc201ecf1fa, 0x0, 0x0, ...)
        /usr/local/google/home/bradfitz/go/src/pkg/net/http/transport.go:186 +0x396
net/http.send(0xc20052ed00, 0xc2000e0000, 0xc200504280, 0x0, 0x0, ...)
        /usr/local/google/home/bradfitz/go/src/pkg/net/http/client.go:166 +0x3a1
net/http.(*Client).send(0xc201a409f0, 0xc20052ed00, 0x1a, 0x100000000, 0xc200000000, ...)
        /usr/local/google/home/bradfitz/go/src/pkg/net/http/client.go:100 +0xcd
net/http.(*Client).doFollowingRedirects(0xc201a409f0, 0xc20052ed00, 0x788728, 0x0, 0x0,
...)
        /usr/local/google/home/bradfitz/go/src/pkg/net/http/client.go:282 +0x5ff
net/http.(*Client).Get(0xc201a409f0, 0xc201d397c0, 0x1a, 0x7058a0, 0x0, ...)
        /usr/local/google/home/bradfitz/go/src/pkg/net/http/client.go:236 +0xb0
net/http_test.TestTransportSocketLateBinding(0xc200552ab0)
        /usr/local/google/home/bradfitz/go/src/pkg/net/http/transport_test.go:1360 +0x362
testing.tRunner(0xc200552ab0, 0x8ee648)
        /usr/local/google/home/bradfitz/go/src/pkg/testing/testing.go:346 +0x8a
created by testing.RunTests
        /usr/local/google/home/bradfitz/go/src/pkg/testing/testing.go:426 +0x86b

goroutine 52256 [select]:
net/http.(*persistConn).writeLoop(0xc200504200)
        /usr/local/google/home/bradfitz/go/src/pkg/net/http/transport.go:763 +0x26f
created by net/http.(*Transport).dialConn
        /usr/local/google/home/bradfitz/go/src/pkg/net/http/transport.go:512 +0x58b

goroutine 52253 [IO wait]:
net.runtime_pollWait(0x7fd9ea4d2dc0, 0x72, 0x0)
        /usr/local/google/home/bradfitz/go/src/pkg/runtime/znetpoll_linux_amd64.c:118 +0x82
net.(*pollDesc).WaitRead(0xc200552aa0, 0xb, 0xc2000e0ea0)
        /usr/local/google/home/bradfitz/go/src/pkg/net/fd_poll_runtime.go:75 +0x31
net.(*netFD).accept(0xc200552a20, 0x788580, 0x0, 0xc2000e0ea0, 0xb, ...)
        /usr/local/google/home/bradfitz/go/src/pkg/net/fd_unix.go:382 +0x2c1
net.(*TCPListener).AcceptTCP(0xc201e5a680, 0x4185c8, 0x0, 0x0)
        /usr/local/google/home/bradfitz/go/src/pkg/net/tcpsock_posix.go:232 +0x57
net.(*TCPListener).Accept(0xc201e5a680, 0x0, 0x0, 0x0, 0x0, ...)
        /usr/local/google/home/bradfitz/go/src/pkg/net/tcpsock_posix.go:242 +0x49
net/http/httptest.(*historyListener).Accept(0xc201a409c0, 0x0, 0x0, 0x0, 0x0, ...)
        /usr/local/google/home/bradfitz/go/src/pkg/net/http/httptest/server.go:48 +0x54
net/http.(*Server).Serve(0xc2000fd960, 0xc200129fc0, 0xc201a409c0, 0x0, 0x0, ...)
        /usr/local/google/home/bradfitz/go/src/pkg/net/http/server.go:1408 +0x85
created by net/http/httptest.(*Server).Start
        /usr/local/google/home/bradfitz/go/src/pkg/net/http/httptest/server.go:109 +0x21a

goroutine 52257 [chan receive]:
net/http_test.func·128(0xc2000d0640, 0xc2000fd910, 0xc20052ea90)
        /usr/local/google/home/bradfitz/go/src/pkg/net/http/transport_test.go:1338 +0xbd
net/http.HandlerFunc.ServeHTTP(0xc200bae6c0, 0xc2000d0640, 0xc2000fd910, 0xc20052ea90)
        /usr/local/google/home/bradfitz/go/src/pkg/net/http/server.go:1015 +0x3e
net/http.(*ServeMux).ServeHTTP(0xc201a40870, 0xc2000d0640, 0xc2000fd910, 0xc20052ea90)
        /usr/local/google/home/bradfitz/go/src/pkg/net/http/server.go:1282 +0x11d
net/http/httptest.(*waitGroupHandler).ServeHTTP(0xc201d39760, 0xc2000d0640,
0xc2000fd910, 0xc20052ea90)
        /usr/local/google/home/bradfitz/go/src/pkg/net/http/httptest/server.go:200 +0x8f
net/http.serverHandler.ServeHTTP(0xc2000fd960, 0xc2000d0640, 0xc2000fd910, 0xc20052ea90)
        /usr/local/google/home/bradfitz/go/src/pkg/net/http/server.go:1383 +0x16c
net/http.(*conn).serve(0xc2019532d0)
        /usr/local/google/home/bradfitz/go/src/pkg/net/http/server.go:962 +0x758
created by net/http.(*Server).Serve
        /usr/local/google/home/bradfitz/go/src/pkg/net/http/server.go:1430 +0x266

goroutine 52255 [IO wait]:
net.runtime_pollWait(0x7fd9ea4d2d20, 0x72, 0x0)
        /usr/local/google/home/bradfitz/go/src/pkg/runtime/znetpoll_linux_amd64.c:118 +0x82
net.(*pollDesc).WaitRead(0xc200650590, 0xb, 0xc2000e0ea0)
        /usr/local/google/home/bradfitz/go/src/pkg/net/fd_poll_runtime.go:75 +0x31
net.(*netFD).Read(0xc200650510, 0xc2013ea000, 0x1000, 0x1000, 0x0, ...)
        /usr/local/google/home/bradfitz/go/src/pkg/net/fd_unix.go:192 +0x2b3
net.(*conn).Read(0xc201e5a710, 0xc2013ea000, 0x1000, 0x1000, 0x8, ...)
        /usr/local/google/home/bradfitz/go/src/pkg/net/net.go:123 +0xc3
bufio.(*Reader).fill(0xc201db9ea0)
        /usr/local/google/home/bradfitz/go/src/pkg/bufio/bufio.go:79 +0x10c
bufio.(*Reader).Peek(0xc201db9ea0, 0x1, 0x0, 0xc2000c1000, 0xc2000ba040, ...)
        /usr/local/google/home/bradfitz/go/src/pkg/bufio/bufio.go:107 +0xc9
net/http.(*persistConn).readLoop(0xc200504200)
        /usr/local/google/home/bradfitz/go/src/pkg/net/http/transport.go:670 +0xc4
created by net/http.(*Transport).dialConn
        /usr/local/google/home/bradfitz/go/src/pkg/net/http/transport.go:511 +0x574
rax     0xfffffffffffffffc
rbx     0xdf8475800
rcx     0xffffffffffffffff
rdx     0x0
rdi     0x7fd9fcff6f60
rsi     0x0
rbp     0x7fd9ec868000
rsp     0x7fd9fcff6e98
r8      0x0
r9      0x0
r10     0x7fd9fcff6ed8
r11     0x287
r12     0x6c9ba0
r13     0xb
r14     0x0
r15     0x2
rip     0x4245a3
rflags  0x287
cs      0x33
fs      0x0
gs      0x0
exit status 2
FAIL    net/http        181.056s
@bradfitz
Copy link
Contributor Author

Comment 1:

Fortunately, I now think this is my fault and not the netpoll code.  Phew.

Status changed to Retracted.

@golang golang locked and limited conversation to collaborators Jun 24, 2016
This issue was closed.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants