podman: ignore ESRCH from kill

Closes: https://github.com/containers/podman/issues/10826

[NO TESTS NEEDED] Fixes a race condition

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
Giuseppe Scrivano 2021-07-01 16:41:23 +02:00
parent fd1715568b
commit 493786fbae
No known key found for this signature in database
GPG key ID: E4730F97F60286ED

View file

@ -268,7 +268,9 @@ func becomeRootInUserNS(pausePid, fileToRead string, fileOutput *os.File) (_ boo
}
if retErr != nil && pid > 0 {
if err := unix.Kill(pid, unix.SIGKILL); err != nil {
logrus.Errorf("failed to kill %d", pid)
if err != unix.ESRCH {
logrus.Errorf("failed to cleanup process %d: %v", pid, err)
}
}
C.reexec_in_user_namespace_wait(C.int(pid), 0)
}
@ -394,7 +396,9 @@ func becomeRootInUserNS(pausePid, fileToRead string, fileOutput *os.File) (_ boo
}
if err := unix.Kill(int(pidC), s.(unix.Signal)); err != nil {
logrus.Errorf("failed to kill %d", int(pidC))
if err != unix.ESRCH {
logrus.Errorf("failed to propagate signal to child process %d: %v", int(pidC), err)
}
}
}
}()