[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