[systemd-devel] [PATCH] core: fix detection of dead process v2.
Zbigniew Jędrzejewski-Szmek
zbyszek at in.waw.pl
Sun Feb 16 08:30:00 PST 2014
On Sat, Feb 15, 2014 at 06:18:40PM +0100, Lennart Poettering wrote:
> On Sat, 15.02.14 02:38, Yuxuan Shui (yshuiv7 at gmail.com) wrote:
>
> > Commit 5ba6985b moves the UNIT_VTABLE(u)->sigchld_event before systemd
> > actually reap the zombie. Which leads to service_load_pid_file accept
> > zombie as a valid pid.
>
> service_load_pid_file() actually checks the validity of all PIDs before
> making use of them, with kill(pid, 0). Zombies actually result in ESRCH
> when one tries to kill them, and we will not accept the PID.
>
> Is this a real problem you encountered? Are you suggesting the kill()
> check doesn't work? If so, we should probably fix that rather than
> adding some new code...
It does fix things for me. Quoting the commit message:
This fixes timeouts like:
[ 2746.602243] systemd[1]: chronyd.service stop-sigterm timed out. Killing.
[ 2836.852545] systemd[1]: chronyd.service still around after SIGKILL. Ignoring.
[ 2927.102187] systemd[1]: chronyd.service stop-final-sigterm timed out. Killing.
[ 3017.352560] systemd[1]: chronyd.service still around after final SIGKILL. Entering failed mode.
Zbyszek
More information about the systemd-devel
mailing list