summaryrefslogtreecommitdiff
path: root/libgo/runtime/signal_unix.c
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/runtime/signal_unix.c')
-rw-r--r--libgo/runtime/signal_unix.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/libgo/runtime/signal_unix.c b/libgo/runtime/signal_unix.c
index ea0a58f2ea..66638dec56 100644
--- a/libgo/runtime/signal_unix.c
+++ b/libgo/runtime/signal_unix.c
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build darwin dragonfly freebsd linux openbsd netbsd
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris
#include <sys/time.h>
@@ -122,6 +122,14 @@ os_sigpipe(void)
}
void
+runtime_unblocksignals(void)
+{
+ sigset_t sigset_none;
+ sigemptyset(&sigset_none);
+ pthread_sigmask(SIG_SETMASK, &sigset_none, nil);
+}
+
+void
runtime_crash(void)
{
int32 i;
@@ -137,6 +145,7 @@ runtime_crash(void)
return;
#endif
+ runtime_unblocksignals();
for(i = 0; runtime_sigtab[i].sig != -1; i++)
if(runtime_sigtab[i].sig == SIGABRT)
break;