diff --git a/libcontainer/integration/execin_test.go b/libcontainer/integration/execin_test.go index 33d7b1cc0..2eb510da6 100644 --- a/libcontainer/integration/execin_test.go +++ b/libcontainer/integration/execin_test.go @@ -133,16 +133,23 @@ func TestExecInError(t *testing.T) { }() ok(t, err) - unexistent := &libcontainer.Process{ - Args: []string{"unexistent"}, - Env: standardEnvironment, - } - err = container.Start(unexistent) - if err == nil { - t.Fatal("Should be an error") - } - if !strings.Contains(err.Error(), "executable file not found") { - t.Fatalf("Should be error about not found executable, got %s", err) + for i := 0; i < 42; i++ { + var out bytes.Buffer + unexistent := &libcontainer.Process{ + Args: []string{"unexistent"}, + Env: standardEnvironment, + Stdout: &out, + } + err = container.Start(unexistent) + if err == nil { + t.Fatal("Should be an error") + } + if !strings.Contains(err.Error(), "executable file not found") { + t.Fatalf("Should be error about not found executable, got %s", err) + } + if !bytes.Contains(out.Bytes(), []byte("executable file not found")) { + t.Fatalf("executable file not found error not delivered to stdio:\n%s", out.String()) + } } } diff --git a/libcontainer/process_linux.go b/libcontainer/process_linux.go index 758f88a42..01021f759 100644 --- a/libcontainer/process_linux.go +++ b/libcontainer/process_linux.go @@ -84,6 +84,7 @@ func (p *setnsProcess) start() (err error) { return newSystemError(err) } if ierr != nil { + p.wait() return newSystemError(ierr) }