From 503db6ee8354bb1ed17ac365507491deecbdcd77 Mon Sep 17 00:00:00 2001 From: Andrew Deason Date: Fri, 21 Feb 2020 15:49:56 -0500 Subject: [PATCH] opr: Allow softsig handlers for SIGFPE SIGFPE is normally a synchronous signal, which would not be handled by opr softsig. However, bosserver uses SIGFPE as an asynchronous signal to modify the local restricted mode. So allow SIGFPE in softsig handlers, so bosserver can use softsig. Change-Id: I413edbed967babb3e60c6fa97f89b40b8d7b3ad7 Reviewed-on: https://gerrit.openafs.org/14080 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot Reviewed-by: Michael Meffie --- src/opr/softsig.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/opr/softsig.c b/src/opr/softsig.c index fa4fcad..e3cbd53 100644 --- a/src/opr/softsig.c +++ b/src/opr/softsig.c @@ -55,7 +55,6 @@ softsigSignalSet(sigset_t *set) sigdelset(set, SIGCONT); sigdelset(set, SIGABRT); sigdelset(set, SIGBUS); - sigdelset(set, SIGFPE); sigdelset(set, SIGILL); sigdelset(set, SIGPIPE); sigdelset(set, SIGSEGV); @@ -159,6 +158,13 @@ opr_softsig_Init(void) opr_Verify(opr_softsig_Register(SIGQUIT, ExitHandler) == 0); opr_Verify(opr_softsig_Register(SIGTSTP, StopHandler) == 0); + /* + * Some of our callers do actually specify a SIGFPE handler, but make sure + * the default SIGFPE behavior does actually terminate the process, in case + * we get a real FPE. + */ + opr_Verify(opr_softsig_Register(SIGFPE, ExitHandler) == 0); + /* Create a signal handler thread which will respond to any incoming signals * for us. */ opr_Verify(pthread_create(&handlerThread, NULL, signalHandler, NULL) == 0); -- 1.9.4