From 16c63e5c07837e6358d85ed05784fdf40348c3e6 Mon Sep 17 00:00:00 2001 From: tatang26 Date: Fri, 8 May 2026 15:11:17 -0500 Subject: [PATCH] fix(dev): kill process tree on Windows --- dev/internal/rebuilder/sysproc_windows.go | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/dev/internal/rebuilder/sysproc_windows.go b/dev/internal/rebuilder/sysproc_windows.go index 3a87c32..fce2f8f 100644 --- a/dev/internal/rebuilder/sysproc_windows.go +++ b/dev/internal/rebuilder/sysproc_windows.go @@ -4,15 +4,30 @@ package rebuilder import ( "context" + "fmt" "os" "os/exec" "os/signal" + "syscall" ) -func setSysProcAttr(cmd *exec.Cmd) {} +func setSysProcAttr(cmd *exec.Cmd) { + cmd.SysProcAttr = &syscall.SysProcAttr{ + CreationFlags: syscall.CREATE_NEW_PROCESS_GROUP, + } +} func terminateProcess(cmd *exec.Cmd) error { - return cmd.Process.Kill() + if cmd.Process == nil { + return nil + } + + kill := exec.Command("taskkill", "/T", "/F", "/PID", fmt.Sprint(cmd.Process.Pid)) + if err := kill.Run(); err != nil { + return cmd.Process.Kill() + } + + return nil } func notifyContext(ctx context.Context) (context.Context, context.CancelFunc) {