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 <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
(cherry picked from commit c2db41258370159c1257ee79df10afa4a2a2d9e8)

Change-Id: I433e4842b684c5f0f453e20d2f5d455b10a792eb
Reviewed-on: https://gerrit.openafs.org/15441
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Ben Huntsman <ben@huntsmans.net>
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
This commit is contained in:
Andrew Deason 2021-07-18 23:05:38 -05:00 committed by Stephan Wiesand
parent 332b5593d4
commit e4e9122365

View File

@ -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 *