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

net/http: apparent deadlock in TestServerWriteTimeout on plan9-amd64-0intro #57114

Open
bcmills opened this issue Dec 6, 2022 · 3 comments
Open
Labels
NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. OS-Plan9
Milestone

Comments

@bcmills
Copy link
Member

bcmills commented Dec 6, 2022

#!watchflakes
post <- builder ~ `^plan9` && pkg == "net/http" && test == "TestServerWriteTimeout"

As of CL 449935, the plan9-amd64-0intro builder went from failing something like 25% of the time to failing nearly 100% of the time.

The vast majority of the current failures are test timeouts running net/http, and they all seem to involve goroutines parked in net/http.(*http2ClientConn).RoundTrip via net/http_test.testServerWriteTimeout.

I think this is probably because the plan9 netpoll implementation does not support (or does not fully support?) SetDeadline.

(attn @golang/plan9; CC @neild)

@bcmills bcmills added OS-Plan9 NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. labels Dec 6, 2022
@bcmills bcmills added this to the Backlog milestone Dec 6, 2022
@0intro
Copy link
Member

0intro commented Dec 6, 2022

Deadlines should be supported. What is not supported is half closing of TCP connections (closeWrite, closeRead, see issue #17906), but I don't believe it's related here.

I'm not sure why this issue is happening on the amd64 builder only and not on the 386 and arm builders. I'll investigate.

@bcmills
Copy link
Member Author

bcmills commented Jan 5, 2023

I'm not sure why this issue is happening on the amd64 builder only and not on the 386 and arm builders. I'll investigate.

Turns out that it does occasionally happen on the plan9-arm builder too:
https://build.golang.org/log/c3901bbe3d4681c4026a08664447fe2629aeebbd

@gopherbot
Copy link

Found new dashboard test flakes for:

#!watchflakes
post <- builder ~ `^plan9` && pkg == "net/http" && test == "TestServerWriteTimeout"
2023-01-20 18:12 plan9-arm go@2507e789 net/http.TestServerWriteTimeout (log)
http.test 35687: warning: process exceeds 100 file descriptors
--- FAIL: TestServerWriteTimeout (0.00s)
    --- FAIL: TestServerWriteTimeout/h1 (0.83s)
        clientserver_test.go:210: server log: http: TLS handshake error from 127.0.0.1:55647: write tcp 127.0.0.1:53294->127.0.0.1:55647: i/o timeout
        serve_test.go:784: Get error, retrying: Get "https://127.0.0.1:53294": EOF
        clientserver_test.go:210: server log: http: TLS handshake error from 127.0.0.1:35055: write tcp 127.0.0.1:45038->127.0.0.1:35055: i/o timeout
        serve_test.go:784: Get error, retrying: Get "https://127.0.0.1:45038": EOF
        clientserver_test.go:210: server log: http: TLS handshake error from 127.0.0.1:34693: write tcp 127.0.0.1:58685->127.0.0.1:34693: i/o timeout
        serve_test.go:784: Get error, retrying: Get "https://127.0.0.1:58685": EOF
        clientserver_test.go:210: server log: http: TLS handshake error from 127.0.0.1:54889: write tcp 127.0.0.1:47544->127.0.0.1:54889: i/o timeout
        serve_test.go:784: Get error, retrying: Get "https://127.0.0.1:47544": EOF
        serve_test.go:797: server timed out writing request body: got err client disconnected; want os.ErrDeadlineExceeded

watchflakes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. OS-Plan9
Projects
Status: No status
Development

No branches or pull requests

3 participants