runtime: fix build on linux
In addition to the compile failure fixed in signal*.c,
preserving the signal mask led to very strange crashes.
Testing shows that looking for SIG_IGN is all that
matters to get along with nohup, so reintroduce
sigset_zero instead of trying to preserve the signal mask.
TBR=iant
CC=golang-dev
https://golang.org/cl/7323067
diff --git a/src/pkg/runtime/thread_darwin.c b/src/pkg/runtime/thread_darwin.c
index d55ec8d..df1adf6 100644
--- a/src/pkg/runtime/thread_darwin.c
+++ b/src/pkg/runtime/thread_darwin.c
@@ -9,6 +9,7 @@
extern SigTab runtime·sigtab[];
+static Sigset sigset_none;
static Sigset sigset_all = ~(Sigset)0;
static Sigset sigset_prof = 1<<(SIGPROF-1);
@@ -98,8 +99,6 @@
}
runtime·sigprocmask(SIG_SETMASK, &sigset_all, &oset);
- mp->sigset = runtime·mal(sizeof(Sigset));
- *(Sigset*)mp->sigset = oset;
errno = runtime·bsdthread_create(stk, mp, gp, fn);
runtime·sigprocmask(SIG_SETMASK, &oset, nil);
@@ -117,8 +116,7 @@
m->gsignal = runtime·malg(32*1024); // OS X wants >=8K, Linux >=2K
runtime·signalstack((byte*)m->gsignal->stackguard - StackGuard, 32*1024);
- if(m->sigset != nil)
- runtime·sigprocmask(SIG_SETMASK, m->sigset, nil);
+ runtime·sigprocmask(SIG_SETMASK, &sigset_none, nil);
runtime·setprof(m->profilehz > 0);
}