mirror of
https://github.com/systemd/systemd.git
synced 2025-01-25 10:04:04 +03:00
systemd: rewatch pids under cgroup v1 when sigchld of processes more than main pid and control pid is captured
If `Delegate` is configured in service, cgroup agent will never send out any datagram as .control subcgroup is generated. Thus systemd will watch all processes on the cgroup hierarchy for SIGCHLD to deal with unreliable cgroup notifications. In this way, systemd should rewatch all processes when any SIGCHLD is captured, more than the control pid or main pid.
This commit is contained in:
parent
dfb3155419
commit
4fc8a63f9e
@ -4169,7 +4169,7 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) {
|
||||
* detect when the cgroup becomes empty. Note that the control process is always
|
||||
* our child so it's pointless to watch all other processes. */
|
||||
if (!control_pid_good(s))
|
||||
if (!s->main_pid_known || s->main_pid_alien)
|
||||
if (!s->main_pid_known || s->main_pid_alien || unit_cgroup_delegate(u))
|
||||
(void) unit_enqueue_rewatch_pids(u);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user