From ba9e7dbf9c1130df228e9324c8a0225d34443150 Mon Sep 17 00:00:00 2001 From: sb Date: Wed, 20 Jan 2010 14:50:45 +0100 Subject: sb119: #i106355# clear signal mask inherited from parent process --- sal/osl/unx/signal.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'sal/osl/unx/signal.c') diff --git a/sal/osl/unx/signal.c b/sal/osl/unx/signal.c index 35884e11c9ba..fe3ab59ba9fc 100644 --- a/sal/osl/unx/signal.c +++ b/sal/osl/unx/signal.c @@ -202,6 +202,7 @@ static sal_Bool InitSignal() int i; struct sigaction act; struct sigaction oact; + sigset_t unset; if (is_soffice_Impl()) { @@ -283,6 +284,16 @@ static sal_Bool InitSignal() } } + /* Clear signal mask inherited from parent process (on Mac OS X, upon a + crash soffice re-execs itself from within the signal handler, so the + second soffice would have the guilty signal blocked and would freeze upon + encountering a similar crash again): */ + if (sigemptyset(&unset) < 0 || + pthread_sigmask(SIG_SETMASK, &unset, NULL) < 0) + { + OSL_TRACE("sigemptyset or pthread_sigmask failed"); + } + return sal_True; } -- cgit