From aa2e8180ac75c2caec57e6a47083a5bb7c82373f Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Tue, 26 Jan 2010 15:54:49 +0000 Subject: [PATCH] Fix signal segfaults on Solaris (#3790) --- rts/posix/Signals.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/rts/posix/Signals.c b/rts/posix/Signals.c index 98115ba..4bb1255 100644 --- a/rts/posix/Signals.c +++ b/rts/posix/Signals.c @@ -183,7 +183,14 @@ generic_handler(int sig USED_IF_THREADS, int r; buf[0] = sig; - memcpy(buf+1, info, sizeof(siginfo_t)); + + if (info == NULL) { + // info may be NULL on Solaris (see #3790) + memset(buf+1, 0, sizeof(siginfo_t)); + } else { + memcpy(buf+1, info, sizeof(siginfo_t)); + } + r = write(io_manager_pipe, buf, sizeof(siginfo_t)+1); if (r == -1 && errno == EAGAIN) { -- 1.7.10.4