[systemd-devel] [PATCH] [Fix] Do not handle SIGKILL since we can not
Kok, Auke-jan H
auke-jan.h.kok at intel.com
Mon May 20 10:37:36 PDT 2013
On Mon, May 20, 2013 at 12:22 AM, Chengwei Yang <chengwei.yang at intel.com> wrote:
> This is a minor fix because it's not a major issue, this fix just avoid
> to get EINVAL error from sigaction(2).
>
> There are two signals can not handled at user space, SIGKILL and
> SIGSTOP even we're PID 1, trying to handle these two signals will get
> EINVAL error.
>
> There are two kinds of systemd instance, running as system manager or
> user session manager, apparently, the latter is a general user space
> process which can not handle SIGKILL. The special pid 1 also can not
> do that refer to kernel/signal.c:do_sigaction().
>
> However, pid 1 is unkillable because the kernel did attach
> SIGNAL_UNKILLABLE to it at system boot up, refer to
> init/main.c:start_kernel()
> --> rest_init()
> --> kernel_thread()
> --> kernel_init()
> --> init_post()
> current->signal->flags |= SIGNAL_UNKILLABLE
>
> Signed-off-by: Chengwei Yang <chengwei.yang at intel.com>
> ---
> src/core/main.c | 1 -
> src/shared/def.h | 2 +-
> 2 files changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/src/core/main.c b/src/core/main.c
> index 7fc06be..8059f6a 100644
> --- a/src/core/main.c
> +++ b/src/core/main.c
> @@ -1408,7 +1408,6 @@ int main(int argc, char *argv[]) {
> /* Reset all signal handlers. */
> assert_se(reset_all_signal_handlers() == 0);
>
> - /* If we are init, we can block sigkill. Yay. */
> ignore_signals(SIGNALS_IGNORE, -1);
>
> if (parse_config_file() < 0)
> diff --git a/src/shared/def.h b/src/shared/def.h
> index 5ba170f..5abb544 100644
> --- a/src/shared/def.h
> +++ b/src/shared/def.h
> @@ -32,4 +32,4 @@
> #define SYSTEMD_CGROUP_CONTROLLER "name=systemd"
>
> #define SIGNALS_CRASH_HANDLER SIGSEGV,SIGILL,SIGFPE,SIGBUS,SIGQUIT,SIGABRT
> -#define SIGNALS_IGNORE SIGKILL,SIGPIPE
> +#define SIGNALS_IGNORE SIGPIPE
Ok, looks fine to me. Was there an error printed by user sessions?
Auke
More information about the systemd-devel
mailing list