fix nil pointer exception when trying to kill process

This commit is contained in:
Jesse Duffield 2019-06-30 18:24:59 +10:00
parent 588ff79003
commit 345f02eb11
2 changed files with 7 additions and 1 deletions

View file

@ -370,6 +370,10 @@ func (c *OSCommand) PipeCommands(commandStrings ...string) error {
// Kill kills a process. If the process has Setpgid == true, then we have anticipated that it might spawn its own child processes, so we've given it a process group ID (PGID) equal to its process id (PID) and given its child processes will inherit the PGID, we can kill that group, rather than killing the process itself.
func (c *OSCommand) Kill(cmd *exec.Cmd) error {
if cmd.Process == nil {
// somebody got to it before we were able to, poor bastard
return nil
}
if cmd.SysProcAttr != nil && cmd.SysProcAttr.Setpgid == true {
// minus sign means we're talking about a PGID as opposed to a PID
return syscall.Kill(-cmd.Process.Pid, syscall.SIGKILL)

View file

@ -193,7 +193,9 @@ func (gui *Gui) renderContainerLogs(container *commands.Container) error {
go func() {
<-stop
cmd.Process.Kill()
if err := gui.OSCommand.Kill(cmd); err != nil {
gui.Log.Warn(err)
}
gui.Log.Info("killed container logs process")
return
}()