From e4e9122365a3ec05c01add5333b532f2c19e1732 Mon Sep 17 00:00:00 2001 From: Andrew Deason Date: Sun, 18 Jul 2021 23:05:38 -0500 Subject: [PATCH] opr: Avoid sigwait on SIGWAITING On AIX, calling sigwait() on a sigset containing SIGWAITING (or SIGKILL or SIGSTOP), causes sigwait to return with an EINVAL error. Currently, signalHandler() calls sigwait() with SIGWAITING, because SIGWAITING is in the sigset returned by softsigSignalSet(). And so, sigwait() returns EINVAL, and our opr_Verify in signalHandler() fails, causing a crash. To avoid this, remove SIGWAITING from the sigset in softsigSignalSet(). This is AIX-specific, since the SIGWAITING signal is AIX-specific. Reviewed-on: https://gerrit.openafs.org/14705 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk (cherry picked from commit c2db41258370159c1257ee79df10afa4a2a2d9e8) Change-Id: I433e4842b684c5f0f453e20d2f5d455b10a792eb Reviewed-on: https://gerrit.openafs.org/15441 Reviewed-by: Andrew Deason Tested-by: BuildBot Reviewed-by: Ben Huntsman Reviewed-by: Mark Vitale Reviewed-by: Michael Meffie Reviewed-by: Stephan Wiesand --- src/opr/softsig.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/opr/softsig.c b/src/opr/softsig.c index fa4fcad4d2..8fe9bf68ae 100644 --- a/src/opr/softsig.c +++ b/src/opr/softsig.c @@ -60,6 +60,9 @@ softsigSignalSet(sigset_t *set) sigdelset(set, SIGPIPE); sigdelset(set, SIGSEGV); sigdelset(set, SIGTRAP); +#ifdef AFS_AIX_ENV + sigdelset(set, SIGWAITING); +#endif } static void *