-
Notifications
You must be signed in to change notification settings - Fork 18k
runtime,net/http: apparent deadlock in (*connReader).abortPendingRead via (*sync.Cond).Wait on ARM and ARM64 #50469
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
Comments
This bug affects (and has a nonzero number of failures on builders for) Marking as release-blocker, but for Go 1.19 rather than 1.18. |
It happens many times to me when I'm using gorilla/websocket, releated issue #20963 gorilla/websocket#246. |
I'm able to reproduce this on linux/arm64. I've been focusing on the failure in 2021-03-04T06:36:17-4b8b2c5/linux-arm64-packet, which means running the tests for net/http/httputil in "short" mode at Go commit 4b8b2c5. A machine with 4 cores / 4 HW threads works fine. Trying to run the test more often (on a bigger machine) leads to ephemeral port exhaustion.
In the failures I've gotten on linux/arm64, and in the five dashboard failures across linux/arm64 and darwin/arm64, I see that the goroutine blocked in Maybe a problem with |
I tracked the 2021-03-04 failure to the netpoller, so I see this issue as closely related to #48925 (closed on 2021-10-15) and #45211 (closed on 2022-01-14). I have a reproducer that gave results within a few minutes on my darwin/arm64 M1 machine, but it stopped working as of the 2021-10-15 commit. Note that the linux/arm64 and darwin/arm64 failures in this issue (mentioning abortPendingRead and sync.Cond) are all from before 2021-10-15. The more recent failures are on plan9/arm (a 32-bit system) and windows/arm64 (apparently run under qemu). The discussion in #45211 mentions Here's the reproducer that worked until the 2021-10-15 / #48925 fix
|
When I disable At 17b2fb1 (the 2022-01-14 change) with |
Still reproducing on the builders. @rhysh, do you have an angle on a fix?
|
The 2022-03-15T18:18:20-5461726-88be85f/windows-arm64-10 log starts with I think that @prattmic fixed it for machines with I think that @rsc fixed it for all ARM/ARM64/"weak memory" machines in #45211. That fix has not yet been released in the Go 1.17 series, so was not present during yesterday's windows/arm64 failure. The only angle I have on a fix is the backport described in #50611. I think that backport is necessary and sufficient. |
greplogs --dashboard -md -l -e net/http\\..\*\\n\\t.\*\\nnet/http_test\\.TestTLSServerClosesConnection
2022-01-05T21:22:03-2b39d86/windows-arm64-10
CC @neild
See previously #7634 (CC @bradfitz).
The text was updated successfully, but these errors were encountered: