From 6a0590fa4e3484ac340624d164d9b8cee1d45070 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Flor=C3=AAncio?= Date: Wed, 14 Jan 2026 01:51:37 +0000 Subject: [PATCH] fix: macos launcher --- .../internal/agent/agentctl/launcher/launcher.go | 11 +++-------- .../agent/agentctl/launcher/sysprocattr_default.go | 11 +++++++++++ .../agent/agentctl/launcher/sysprocattr_linux.go | 12 ++++++++++++ 3 files changed, 26 insertions(+), 8 deletions(-) create mode 100644 apps/backend/internal/agent/agentctl/launcher/sysprocattr_default.go create mode 100644 apps/backend/internal/agent/agentctl/launcher/sysprocattr_linux.go diff --git a/apps/backend/internal/agent/agentctl/launcher/launcher.go b/apps/backend/internal/agent/agentctl/launcher/launcher.go index 31d760b50c..4ab241ec76 100644 --- a/apps/backend/internal/agent/agentctl/launcher/launcher.go +++ b/apps/backend/internal/agent/agentctl/launcher/launcher.go @@ -133,13 +133,9 @@ func (l *Launcher) Start(ctx context.Context) error { ) // Set process attributes: - // - Pdeathsig: kernel sends SIGTERM to child when parent dies (crash protection) - // - Setpgid: create new process group so Ctrl+C doesn't propagate directly - // (we handle shutdown ourselves via Stop()) - l.cmd.SysProcAttr = &syscall.SysProcAttr{ - Pdeathsig: syscall.SIGTERM, - Setpgid: true, // Don't inherit parent's process group - } + // - Pdeathsig on Linux: kernel sends SIGTERM to child when parent dies. + // - Setpgid: create new process group so Ctrl+C doesn't propagate directly. + l.cmd.SysProcAttr = buildSysProcAttr() // Capture stdout and stderr stdout, err := l.cmd.StdoutPipe() @@ -332,4 +328,3 @@ func (l *Launcher) monitorExit() { close(l.exited) } - diff --git a/apps/backend/internal/agent/agentctl/launcher/sysprocattr_default.go b/apps/backend/internal/agent/agentctl/launcher/sysprocattr_default.go new file mode 100644 index 0000000000..abc48b1556 --- /dev/null +++ b/apps/backend/internal/agent/agentctl/launcher/sysprocattr_default.go @@ -0,0 +1,11 @@ +//go:build !linux + +package launcher + +import "syscall" + +func buildSysProcAttr() *syscall.SysProcAttr { + return &syscall.SysProcAttr{ + Setpgid: true, + } +} diff --git a/apps/backend/internal/agent/agentctl/launcher/sysprocattr_linux.go b/apps/backend/internal/agent/agentctl/launcher/sysprocattr_linux.go new file mode 100644 index 0000000000..b7c967fc5b --- /dev/null +++ b/apps/backend/internal/agent/agentctl/launcher/sysprocattr_linux.go @@ -0,0 +1,12 @@ +//go:build linux + +package launcher + +import "syscall" + +func buildSysProcAttr() *syscall.SysProcAttr { + return &syscall.SysProcAttr{ + Pdeathsig: syscall.SIGTERM, + Setpgid: true, + } +}