From: Mike Gilbert Date: Thu, 24 Oct 2024 16:24:35 +0000 (-0400) Subject: posix_spawn_wrapper: do not set POSIX_SPAWN_SETSIGDEF flag X-Git-Tag: v257-rc1~76 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ff94426f8a2d6cd4ea2e370835db152917a1684e;p=thirdparty%2Fsystemd.git posix_spawn_wrapper: do not set POSIX_SPAWN_SETSIGDEF flag Setting this flag is a noop without a corresponding call to posix_spawnattr_setsigdefault. If we call posix_spawnattr_setsigdefault with a full signal set, it causes glibc's posix_spawn implementation to call sigaction 63 times, once for each signal. That seems wasteful. This feature is really only useful for signals which have their disposition set to SIG_IGN. Otherwise the dispostion gets set to SIG_DFL automatically, either by clone(CLONE_CLEAR_SIGHAND) or the subsequent execve. As far as I can tell, systemd does not have any signals set to SIG_IGN under normal operating conditions. --- diff --git a/src/basic/process-util.c b/src/basic/process-util.c index f30d9117a7e..a85a1b35f0a 100644 --- a/src/basic/process-util.c +++ b/src/basic/process-util.c @@ -2029,7 +2029,7 @@ int posix_spawn_wrapper( const char *cgroup, PidRef *ret_pidref) { - short flags = POSIX_SPAWN_SETSIGMASK|POSIX_SPAWN_SETSIGDEF; + short flags = POSIX_SPAWN_SETSIGMASK; posix_spawnattr_t attr; sigset_t mask; int r;