From 48c3f08bcbeb92aeaceb6d0b16e11940c8251b3b Mon Sep 17 00:00:00 2001 From: Snider Date: Mon, 9 Mar 2026 15:16:20 +0000 Subject: [PATCH] fix: use Signal(0) for process polling in daemonRunStop MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Consistent with cmd/service stopDaemon — polls process directly instead of PID file removal to avoid PID reuse false positives. Co-Authored-By: Claude Opus 4.6 --- pkg/cli/daemon_cmd.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/cli/daemon_cmd.go b/pkg/cli/daemon_cmd.go index 3e0b48e..96d12c4 100644 --- a/pkg/cli/daemon_cmd.go +++ b/pkg/cli/daemon_cmd.go @@ -170,7 +170,9 @@ func daemonRunStop(cfg DaemonCommandConfig) error { deadline := time.Now().Add(30 * time.Second) for time.Now().Before(deadline) { - if _, still := process.ReadPID(cfg.PIDFile); !still { + if err := proc.Signal(syscall.Signal(0)); err != nil { + // Process is gone — clean up PID file if it lingers. + _ = os.Remove(cfg.PIDFile) LogInfo("Daemon stopped") return nil }