Join GitHub today
GitHub is home to over 36 million developers working together to host and review code, manage projects, and build software together.Sign up
runtime: panic 'exitsyscall: syscall frame is no longer valid' in go tool #24656
What version of Go are you using (
@ianlancetaylor yes, it was.
I tried to reproduce this today on a different machine. I got some different failures instead.
The basic steps to reproduce:
Go binary segfaulted, but with qemu displaying some warnings.
the process hung and must be stopped.
This time a crash in Go
Go binary segfaulted, again with the qemu failures.
Go binary segfaulted, but no qemu failure messages.
Go works reliably when running on a real machine. I think these issues in
FWIW I can reproduce this without docker. It appears that go1.11 arm and arm64 binaries cannot be run under qemu user emulation (this is a "regression", since 1.10 binaries work).
I know we don't guarantee that Go binaries work under qemu user emulation mode, but it was nice to be able to use it...
Command and full trace:
Thanks. So the problem seems to be that QEMU does not permit us to set the signal handler for signal 64. That seems like a bug in QEMU. And what has changed is probably that we used to simply ignore the result of
I think we re-discovered this issue from 2013 (or it went away and now it's back):
I think they're aware. From here: https://git.qemu.org/?p=qemu.git;a=blob;f=linux-user/signal.c;h=a3022c2f04e83ddf370d30905e51b6fa62c1f23d;hb=HEAD#l77
I couldn't find a bug in their tracker, but I found a thread where someone was complaining about not being able to run Go binaries: https://lists.gnu.org/archive/html/qemu-discuss/2016-03/msg00002.html
Also it appears that we had workarounds in place for this issue in the past:
Either we add the signal 64 workaround back or we declare once and for all that running Go binaries under qemu-user is not supported and it's not supposed to work (until they change the way they handle signals).