From 345f02eb11e3c74aaaee275990b6c0e0b5a3d868 Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Sun, 30 Jun 2019 18:24:59 +1000 Subject: [PATCH 1/3] fix nil pointer exception when trying to kill process --- pkg/commands/os.go | 4 ++++ pkg/gui/containers_panel.go | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/pkg/commands/os.go b/pkg/commands/os.go index 1e9d8118..3c420fdd 100644 --- a/pkg/commands/os.go +++ b/pkg/commands/os.go @@ -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) diff --git a/pkg/gui/containers_panel.go b/pkg/gui/containers_panel.go index 4b5a6135..22ec1d99 100644 --- a/pkg/gui/containers_panel.go +++ b/pkg/gui/containers_panel.go @@ -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 }() From 6ca5afc7673c00af0db638ccbb8d9f1df182c6e4 Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Sun, 30 Jun 2019 18:31:08 +1000 Subject: [PATCH 2/3] bump termbox-go --- Gopkg.lock | 4 ++-- vendor/github.com/jesseduffield/termbox-go/api.go | 4 +++- vendor/github.com/jesseduffield/termbox-go/termbox.go | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Gopkg.lock b/Gopkg.lock index a3ace871..5acb6e3d 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -155,11 +155,11 @@ [[projects]] branch = "master" - digest = "1:e0306e92cef41d02af05a9f88395ec49c94f0255d54ca88ee3c02ae8f5806ee3" + digest = "1:7c71e4035e802da25ad590ae5f1cb0e931b2b4806aa0b5539d53c02a1cf6a64d" name = "github.com/jesseduffield/termbox-go" packages = ["."] pruneopts = "NUT" - revision = "a9796224c07f5d757b399082bfee60de9574a2d9" + revision = "9dd53af7214ead48bbe380cdf8a3229ec43eeb58" [[projects]] branch = "v2" diff --git a/vendor/github.com/jesseduffield/termbox-go/api.go b/vendor/github.com/jesseduffield/termbox-go/api.go index 66a13814..3aa43711 100644 --- a/vendor/github.com/jesseduffield/termbox-go/api.go +++ b/vendor/github.com/jesseduffield/termbox-go/api.go @@ -22,6 +22,8 @@ import "time" // } // defer termbox.Close() func Init() error { + quitPolling = make(chan int) + var err error out, err = os.OpenFile("/dev/tty", syscall.O_WRONLY, 0) @@ -120,7 +122,7 @@ func Interrupt() { // when termbox's functionality isn't required anymore. func Close() { quit <- 1 - quitPolling <- 1 + close(quitPolling) out.WriteString(funcs[t_show_cursor]) out.WriteString(funcs[t_sgr0]) out.WriteString(funcs[t_clear_screen]) diff --git a/vendor/github.com/jesseduffield/termbox-go/termbox.go b/vendor/github.com/jesseduffield/termbox-go/termbox.go index 15d3e0e2..e3f353a5 100644 --- a/vendor/github.com/jesseduffield/termbox-go/termbox.go +++ b/vendor/github.com/jesseduffield/termbox-go/termbox.go @@ -77,7 +77,7 @@ var ( sigwinch = make(chan os.Signal, 1) sigio = make(chan os.Signal, 1) quit = make(chan int) - quitPolling = make(chan int) + quitPolling chan int // get set on each initialize input_comm = make(chan input_event) interrupt_comm = make(chan struct{}) intbuf = make([]byte, 0, 16) From d317bc37dba06b5d0a107e2087a5a25c00e5708c Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Sun, 30 Jun 2019 18:31:40 +1000 Subject: [PATCH 3/3] remove unused import --- Gopkg.toml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Gopkg.toml b/Gopkg.toml index 8cad8078..683fce3d 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -48,7 +48,3 @@ [[constraint]] branch = "v2" name = "github.com/jesseduffield/yaml" - -[[constraint]] - branch = "master" - name = "github.com/jesseduffield/roll"