multica-ai/multica · error

find process %d: %w

Error message

find process %d: %w

What it means

Error "find process %d: %w" thrown in multica-ai/multica.

Source

Thrown at server/cmd/multica/cmd_daemon.go:1291

			label = fmt.Sprintf("Daemon [%s]", profile)
		}
		fmt.Fprintf(os.Stderr, "%s is not running.\n", label)
		return nil
	}
	// The PID to kill comes from whatever answered on this port, so verify it
	// is ours before signalling it.
	if err := daemonIdentityMismatch(health, profile, healthPort); err != nil {
		return err
	}

	pid, ok := health["pid"].(float64)
	if !ok || pid == 0 {
		return fmt.Errorf("could not determine daemon PID from health endpoint")
	}

	process, err := os.FindProcess(int(pid))
	if err != nil {
		return fmt.Errorf("find process %d: %w", int(pid), err)
	}

	// Request graceful shutdown via the daemon's HTTP /shutdown endpoint
	// rather than an OS signal. On Windows the daemon is spawned with
	// DETACHED_PROCESS so it shares no console with us, which means
	// GenerateConsoleCtrlEvent can't reach it; HTTP works on both
	// platforms and triggers the same context-cancel path the daemon
	// already uses for self-restart.
	if err := requestDaemonShutdown(healthPort); err != nil {
		fmt.Fprintf(os.Stderr, "Graceful shutdown request failed: %v — falling back to forced kill.\n", err)
		if kerr := process.Kill(); kerr != nil {
			return fmt.Errorf("kill daemon (pid %d): %w", int(pid), kerr)
		}
	}

	fmt.Fprintf(os.Stderr, "Stopping daemon (pid %d)...\n", int(pid))

	// Poll health endpoint until daemon is gone.

View on GitHub (pinned to 2c0912b6ec)

Solutions

  1. Verify the daemon process still exists.

When it happens

Trigger: Thrown at server/cmd/multica/cmd_daemon.go:1291 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of multica-ai/multica@2c0912b6ec (2026-08-15). Data as JSON: /api/errors/3974d6e64ae2aa80. Report an issue: GitHub.