From: Lennart Poettering Date: Tue, 28 Apr 2015 10:20:29 +0000 (+0200) Subject: core: when we cannot add PID to a scope cgroup, log about it X-Git-Tag: v220~272 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dd305ec9c6c2ef6e0b5e43de388a98825385b359;p=thirdparty%2Fsystemd.git core: when we cannot add PID to a scope cgroup, log about it Also, place the scope unit in failed state. --- diff --git a/src/core/execute.c b/src/core/execute.c index bbd0d2c75d4..9eba323529c 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -1809,6 +1809,7 @@ static int exec_child( log_close(); } } + execve(command->path, final_argv, final_env); *exit_status = EXIT_EXEC; return -errno; @@ -1903,7 +1904,7 @@ int exec_spawn(ExecCommand *command, * sure that when we kill the cgroup the process will be * killed too). */ if (params->cgroup_path) - cg_attach(SYSTEMD_CGROUP_CONTROLLER, params->cgroup_path, pid); + (void) cg_attach(SYSTEMD_CGROUP_CONTROLLER, params->cgroup_path, pid); exec_status_start(&command->exec_status, pid); diff --git a/src/core/scope.c b/src/core/scope.c index 1c3c6bb5409..1848641d811 100644 --- a/src/core/scope.c +++ b/src/core/scope.c @@ -277,6 +277,7 @@ static int scope_start(Unit *u) { if (s->state == SCOPE_FAILED) return -EPERM; + /* We can't fulfill this right now, please try again later */ if (s->state == SCOPE_STOP_SIGTERM || s->state == SCOPE_STOP_SIGKILL) return -EAGAIN; @@ -290,8 +291,11 @@ static int scope_start(Unit *u) { (void) unit_reset_cpu_usage(u); r = unit_attach_pids_to_cgroup(u); - if (r < 0) + if (r < 0) { + log_unit_warning_errno(UNIT(s)->id, r, "%s: Failed to add PIDs to scope's control group: %m", UNIT(s)->id); + scope_enter_dead(s, SERVICE_FAILURE_RESOURCES); return r; + } s->result = SCOPE_SUCCESS;