summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorChengwei Yang <chengwei.yang@intel.com>2013-05-20 15:22:27 +0800
committerLennart Poettering <lennart@poettering.net>2013-06-06 08:58:58 +0200
commit1cce5d639cdcb3b237e2eda3c36782f98ff23b46 (patch)
tree051112836fd8cfa17b942204a94f12c51767056a /src/core
parent4a4c0be0ab713410ab65bb6bd0c0702abd9e9f4c (diff)
manager: Do not handle SIGKILL since we can not
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
Diffstat (limited to 'src/core')
-rw-r--r--src/core/main.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/src/core/main.c b/src/core/main.c
index bb7364054e..26aa561218 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -1405,7 +1405,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)