The sigsuspend(2) man page doesn't spell out explicitly what happens for signals that are discarded, either as the default action or where the handler is set to SIG_IGN. I think it should.
OK? - todd Index: lib/libc/sys/sigsuspend.2 =================================================================== RCS file: /cvs/src/lib/libc/sys/sigsuspend.2,v retrieving revision 1.14 diff -u -p -u -r1.14 sigsuspend.2 --- lib/libc/sys/sigsuspend.2 29 May 2017 09:40:02 -0000 1.14 +++ lib/libc/sys/sigsuspend.2 10 May 2023 17:25:44 -0000 @@ -44,12 +44,15 @@ .Fn sigsuspend temporarily changes the blocked signal mask to the set to which .Fa sigmask -points, -and then waits for a signal to arrive; -on return the previous set of masked signals is restored. -The signal mask set -is usually empty to indicate that all +points, then waits for a signal to arrive that either has a handler +installed or that terminates the process. +On return, the previous set of masked signals is restored. +The signal mask set is usually empty to indicate that all signals are to be unblocked for the duration of the call. +Signals that are discarded by default, or that have the handler set to +.Dv SIG_IGN , +will not interrupt +.Nm . .Pp In normal usage, a signal is blocked using .Xr sigprocmask 2