aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/os_linux.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/os_linux.go')
-rw-r--r--src/runtime/os_linux.go12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/runtime/os_linux.go b/src/runtime/os_linux.go
index a4992343b5..68f99de115 100644
--- a/src/runtime/os_linux.go
+++ b/src/runtime/os_linux.go
@@ -415,10 +415,14 @@ func (c *sigctxt) fixsigcode(sig uint32) {
//go:nosplit
func sysSigaction(sig uint32, new, old *sigactiont) {
if rt_sigaction(uintptr(sig), new, old, unsafe.Sizeof(sigactiont{}.sa_mask)) != 0 {
- // Use system stack to avoid split stack overflow on ppc64/ppc64le.
- systemstack(func() {
- throw("sigaction failed")
- })
+ // Workaround for bug in Qemu user mode emulation. (qemu
+ // rejects rt_sigaction of signal 64, SIGRTMAX).
+ if sig != 64 {
+ // Use system stack to avoid split stack overflow on ppc64/ppc64le.
+ systemstack(func() {
+ throw("sigaction failed")
+ })
+ }
}
}