From: Shenghou Ma Date: Tue, 12 Aug 2014 03:32:33 +0000 (-0400) Subject: [dev.power64] runtime: ignore rt_sigaction error if it's for SIGRTMAX. X-Git-Tag: go1.5beta1~2684^2~25^2~86 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=8881e032d43470bdeaabc9b93b5a948094264d2c;p=gostls13.git [dev.power64] runtime: ignore rt_sigaction error if it's for SIGRTMAX. 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 --- diff --git a/src/pkg/runtime/os_linux.c b/src/pkg/runtime/os_linux.c index 77754f481c..b9ac8c619c 100644 --- a/src/pkg/runtime/os_linux.c +++ b/src/pkg/runtime/os_linux.c @@ -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"); }