Skip to content

Verify primary PID is still alive before assuming it is running#217

Open
chen3feng wants to merge 2 commits into
itay-grudev:masterfrom
chen3feng:master
Open

Verify primary PID is still alive before assuming it is running#217
chen3feng wants to merge 2 commits into
itay-grudev:masterfrom
chen3feng:master

Conversation

@chen3feng
Copy link
Copy Markdown

When a primary instance is force-killed (SIGKILL), the shared memory block persists on Unix systems with primary=true and the stale PID. Currently this causes all subsequent launches to detect a non-existent primary and immediately exit as secondary instances.

This PR adds an isProcessRunning() check after the shared memory checksum verification. If the recorded primaryPid no longer corresponds to a running process:

  • Unix: uses kill(pid, 0) + errno != ESRCH
  • Windows: uses OpenProcess() + GetExitCodeProcess()

The new instance then takes over as primary instead of exiting.

Tested on macOS (force-kill scenario) and confirmed the stale PID warning is now followed by successful takeover.

chen3feng and others added 2 commits May 23, 2026 18:06
When a primary instance is force-killed (SIGKILL), the shared memory
block persists with `primary=true` and the stale PID. Previously this
caused all subsequent launches to detect a non-existent primary and
immediately exit as secondary instances.

Now we check if the recorded primaryPid actually corresponds to a
running process via kill(pid, 0) on Unix or OpenProcess() on Windows.
If the PID is gone, we take over as the primary instance.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants