]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.power64] runtime: ignore rt_sigaction error if it's for SIGRTMAX.
authorShenghou Ma <minux@golang.org>
Tue, 12 Aug 2014 03:32:33 +0000 (23:32 -0400)
committerShenghou Ma <minux@golang.org>
Tue, 12 Aug 2014 03:32:33 +0000 (23:32 -0400)
Workaround a qemu linux user space emulation bug.
ref: http://git.qemu.org/?p=qemu.git;a=blob;f=linux-user/signal.c;h=1141054be2170128d6f7a340b41484b49a255936;hb=HEAD#l82

LGTM=rsc
R=rsc, iant
CC=golang-codereviews
https://golang.org/cl/124900043

src/pkg/runtime/os_linux.c

index 77754f481ca66be570d79762d697caf4b5421e64..b9ac8c619cbc8122a44b898f022e49c933a0e278 100644 (file)
@@ -312,7 +312,8 @@ runtime·setsig(int32 i, GoSighandler *fn, bool restart)
        if(fn == runtime·sighandler)
                fn = (void*)runtime·sigtramp;
        sa.sa_handler = fn;
-       if(runtime·rt_sigaction(i, &sa, nil, sizeof(sa.sa_mask)) != 0)
+       // Qemu rejects rt_sigaction of SIGRTMAX (64).
+       if(runtime·rt_sigaction(i, &sa, nil, sizeof(sa.sa_mask)) != 0 && i != 64)
                runtime·throw("rt_sigaction failure");
 }