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