-
Notifications
You must be signed in to change notification settings - Fork 18k
runtime: async preemption breaks darwin/arm #35439
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
Enabling async preemption on darwin/arm and darwin/arm64 causes the builder to fail, e.g. https://build.golang.org/log/03f727b8f91b0c75bf54ff508d7d2f00b5cad4bf Due to the limited resource, I haven't been able to get access on those devices to debug. Disable async preemption for now. Updates #35439. Change-Id: I5a31ad6962c2bae8e6e9b8303c494610a8a4e50a Reviewed-on: https://go-review.googlesource.com/c/go/+/205842 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Change https://golang.org/cl/205842 mentions this issue: |
/cc @eliasnaur @steeve |
Unfortunately, the Corellium builders have networks problem at the moment. If you have any debugging CLs you'd like me to test, please let me know. I can run the ios tests locally. |
The corellium builders are up again, so when they're through the backlog you should be able to gomote in. I've started another iOS device to speed things up. |
Thanks @eliasnaur ! I was able to access the Corellium gomote and dig into what's going on. I'll send CLs shortly. It should work on darwin/arm64 now. The problem for ARM64 doesn't seem to appear on ARM32. I couldn't access the ARM32 builder. So I still don't know if it works on ARM32. |
Change https://golang.org/cl/206418 mentions this issue: |
Change https://golang.org/cl/206419 mentions this issue: |
Very nice, thank you! Let's just submit this and see what happens. Corellium does not support arm32, so gomoting is diffcult. |
iOS does not support SA_ONSTACK. The signal handler runs on the G stack. Any writes below the SP may be clobbered by the signal handler (even without call injection). So we save LR after decrementing SP on iOS. Updates #35439. Change-Id: Ia6d7a0669e0bcf417b44c031d2e26675c1184165 Reviewed-on: https://go-review.googlesource.com/c/go/+/206418 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
The problem should be fixed by the previous CL. Reenable async preemption on darwin/arm64. Updates #35439. Change-Id: I93e8c4702b4d8fe6abaa6fc9c27def5c8aed1b59 Reviewed-on: https://go-review.googlesource.com/c/go/+/206419 Reviewed-by: Keith Randall <khr@golang.org>
Change https://golang.org/cl/206957 mentions this issue: |
Async preemption also causes linux/arm32 to segfault on current tip. Segfaults disappear after async preemption is disabled (GODEBUG=asyncpreemptoff=1). |
@reusee Can you provide more details? The linux-arm builder seems to be working. Thanks. |
@ianlancetaylor It's a proxy program for internal use. I'm trying to find a reproduce program. Sometimes it crash with 'fatal: bad g in signal handler', most times just 'Segmentation fault'. |
I found a workaround for the segfault that is settings GOMAXPROCS to 1. Still can't find a short reproduce. It's several thousand lines of tightly coupled codes. |
Change https://golang.org/cl/227198 mentions this issue: |
What version of Go are you using (
go version
)?tip (a930fed)
Does this issue reproduce with the latest release?
No
What operating system and processor architecture are you using (
go env
)?darwin/arm and darwin/arm64
What did you do?
After async preemption is enabled, the darwin/arm64 builder starts to fail, e.g.
https://build.golang.org/log/03f727b8f91b0c75bf54ff508d7d2f00b5cad4bf
I haven't been able to get access to the builders due to the limited resource. I'll look into the failure once I get the access.
The text was updated successfully, but these errors were encountered: