Windows: Publish exit status correctly in TaskExit

Signed-off-by: John Howard <jhoward@microsoft.com>

Before this change, the shim was only publishing a non-zero exit status
(exit code) in the case that the process.Wait() call failed. This
grabs the exit status correctly when process.Wait() succeeds too.
This commit is contained in:
John Howard 2019-01-15 10:44:18 -08:00
parent 96f306ee4c
commit 4ef9bf5c84

View File

@ -21,7 +21,6 @@ package runhcs
import ( import (
"context" "context"
"os" "os"
"os/exec"
"sync" "sync"
"sync/atomic" "sync/atomic"
"syscall" "syscall"
@ -69,15 +68,14 @@ func waitForProcess(ctx context.Context, process *process, p *os.Process, s *ser
}) })
var status int var status int
_, eerr := p.Wait() processState, eerr := p.Wait()
if eerr != nil { if eerr != nil {
status = 255 status = 255
if exitErr, ok := eerr.(*exec.ExitError); ok { p.Kill()
if ws, ok := exitErr.Sys().(syscall.WaitStatus); ok { } else {
status = ws.ExitStatus() status = processState.Sys().(syscall.WaitStatus).ExitStatus()
}
}
} }
now := time.Now() now := time.Now()
process.exit.Store(&processExit{ process.exit.Store(&processExit{
pid: pid, pid: pid,