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: apparent deadlock in TestSignalM #35276
Comments
Change https://golang.org/cl/204620 mentions this issue: |
WaitForSigusr1 registers a callback to be called on SIGUSR1 directly from the runtime signal handler. Currently, this callback has a write barrier in it, which can crash with a nil P if the GC is active and the signal arrives on an M that doesn't have a P. Fix this by recording the ID of the M that receives the signal instead of the M itself, since that's all we needed anyway. To make sure there are no other problems, this also lifts the callback into a package function and marks it "go:nowritebarrierrec". Fixes #35248. Updates #35276, since in principle a write barrier at exactly the wrong time while entering the scheduler could cause issues, though I suspect that bug is unrelated. Change-Id: I47b4bc73782efbb613785a93e381d8aaf6850826 Reviewed-on: https://go-review.googlesource.com/c/go/+/204620 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Than McIntosh <thanm@google.com> Reviewed-by: Bryan C. Mills <bcmills@google.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This has happened a few times since "runtime: remove write barrier in WaitForSigusr1" landed, so that CL clearly didn't fix it (it was only a guess that it might). |
The failures are only on Darwin, Dragonfly, and AIX. |
OK, I think I see what the problem is, at least on Darwin. We are calling |
Change https://golang.org/cl/206078 mentions this issue: |
Change https://golang.org/cl/206077 mentions this issue: |
This adds pipe/pipe2 on Solaris as they exist on other Unix systems. They were not added previously because Solaris does not need them for netpollBreak. They are added now in preparation for using pipes in TestSignalM. Updates #35276 Change-Id: I53dfdf077430153155f0a79715af98b0972a841c Reviewed-on: https://go-review.googlesource.com/c/go/+/206077 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Change https://golang.org/cl/207577 mentions this issue: |
CL 206078 introduced a stray errno check that was always false. This CL removes it. Updates #35276 Change-Id: I6996bb595d347fe81752786a3d83d3432735c9cb GitHub-Last-Rev: e026e71 GitHub-Pull-Request: #35650 Reviewed-on: https://go-review.googlesource.com/c/go/+/207577 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
From
darwin-386-10_14
(https://build.golang.org/log/b5777ae134f6711c97b26f42b83697bc014a335b):CC @cherrymui @mknyszek
The text was updated successfully, but these errors were encountered: