mirror of
https://github.com/docker/docs.git
synced 2026-04-12 06:19:22 +07:00
Update libcontainer to 2d3b5af7486f1a4e80a5ed91859d309b4eebf80c
This revision is from docker_1.5 branch, because we don't want to introduce user namespace in docker 1.5, but fix for --pid=host is needed. Fixes #10303 Signed-off-by: Alexander Morozov <lk4d4@docker.com>
This commit is contained in:
@@ -50,10 +50,20 @@ func Exec(container *libcontainer.Config, stdin io.Reader, stdout, stderr io.Wri
|
||||
}
|
||||
child.Close()
|
||||
|
||||
wait := func() (*os.ProcessState, error) {
|
||||
ps, err := command.Process.Wait()
|
||||
// we should kill all processes in cgroup when init is died if we use
|
||||
// host PID namespace
|
||||
if !container.Namespaces.Contains(libcontainer.NEWPID) {
|
||||
killAllPids(container)
|
||||
}
|
||||
return ps, err
|
||||
}
|
||||
|
||||
terminate := func(terr error) (int, error) {
|
||||
// TODO: log the errors for kill and wait
|
||||
command.Process.Kill()
|
||||
command.Wait()
|
||||
wait()
|
||||
return -1, terr
|
||||
}
|
||||
|
||||
@@ -109,16 +119,16 @@ func Exec(container *libcontainer.Config, stdin io.Reader, stdout, stderr io.Wri
|
||||
startCallback()
|
||||
}
|
||||
|
||||
if err := command.Wait(); err != nil {
|
||||
ps, err := wait()
|
||||
if err != nil {
|
||||
if _, ok := err.(*exec.ExitError); !ok {
|
||||
return -1, err
|
||||
}
|
||||
}
|
||||
if !container.Namespaces.Contains(libcontainer.NEWPID) {
|
||||
killAllPids(container)
|
||||
}
|
||||
// waiting for pipe flushing
|
||||
command.Wait()
|
||||
|
||||
waitStatus := command.ProcessState.Sys().(syscall.WaitStatus)
|
||||
waitStatus := ps.Sys().(syscall.WaitStatus)
|
||||
if waitStatus.Signaled() {
|
||||
return EXIT_SIGNAL_OFFSET + int(waitStatus.Signal()), nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user