The current behavior returns EINVAL on these 2 signals, which is
different from the requirement of POSIX. In addition, it makes
posix_spawn fail to set POSIX_SPAWN_SETSIGDEF. In
newlib/libc/posix/posix_spawn.c:200, it tries to set for all signals
including SIGKILL & SIGSTOP, and sigaction should not fail.
---
winsup/cygwin/signal.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/winsup/cygwin/signal.cc b/winsup/cygwin/signal.cc
index f8ba67e75..a964c3b29 100644
--- a/winsup/cygwin/signal.cc
+++ b/winsup/cygwin/signal.cc
@@ -440,7 +440,7 @@ sigaction_worker (int sig, const struct sigaction
*newact,
oa.sa_handler);
if (sig == SIGKILL || sig == SIGSTOP)
{
- set_errno (EINVAL);
+ res = 0;
__leave;
}
struct sigaction na = *newact;
--
2.48.0