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:
parent
96f306ee4c
commit
4ef9bf5c84
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user