Index: src/pkg/runtime/cgo/gcc_freebsd_arm.c |
=================================================================== |
--- a/src/pkg/runtime/cgo/gcc_freebsd_arm.c |
+++ b/src/pkg/runtime/cgo/gcc_freebsd_arm.c |
@@ -39,10 +39,14 @@ |
_cgo_sys_thread_start(ThreadStart *ts) |
{ |
pthread_attr_t attr; |
+ sigset_t ign, oset; |
pthread_t p; |
size_t size; |
int err; |
+ SIGFILLSET(ign); |
+ pthread_sigmask(SIG_SETMASK, &ign, &oset); |
+ |
// Not sure why the memset is necessary here, |
// but without it, we get a bogus stack size |
// out of pthread_attr_getstacksize. C'est la Linux. |
@@ -52,6 +56,9 @@ |
pthread_attr_getstacksize(&attr, &size); |
ts->g->stackguard = size; |
err = pthread_create(&p, &attr, threadentry, ts); |
+ |
+ pthread_sigmask(SIG_SETMASK, &oset, nil); |
+ |
if (err != 0) { |
fprintf(stderr, "runtime/cgo: pthread_create failed: %s\n", strerror(err)); |
abort(); |