Repository navigation
fix(runtime): harden host-death watchdog identity - #22
Open
dilatedtime wants to merge 1 commit into
Open
dilatedtime wants to merge 1 commit into
dilatedtime wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
The OOP runtime now treats its host watchdog as a process-identity boundary rather than only a PID lookup:
BOSS_HOST_PIDafter this child JVM started; that temporal ordering detects PID reuse without changing the host protocolBOSS_HOST_PIDas unset while retaining warnings for malformed non-blank/self-PID declarationsHostDeathWatchdog.ktand document the intentionalRuntime.halt/POSIX-zombie boundariessh-only non-child fixture with a JDK-only launcher, so the same realProcessHandle.onExit()path runs on Windows, macOS, and LinuxUser impact
A plugin child can no longer attach its lifetime to an unrelated process after rapid PID reuse and then survive indefinitely after BOSS is gone. At the same time, an unavailable optional process API no longer prevents an otherwise healthy plugin from starting. The Windows suite now exercises the watchdog instead of failing before it reaches the behavior under test.
Validation
HostDeathWatchdogTeston Windows — 13 tests, 7 failures (shunavailable plus pid-1 assumptions)CI=true ./gradlew build fatJar— passedHostDeathWatchdogKt.classandPluginProcessMainKt.classgit diff --check— cleanCompatibility and scope
No IPC, manifest, dependency, version, or host-side change is required. Missing start-time metadata deliberately keeps the existing PID-only behavior. PR #21 also adjusts the old Windows test launcher; its production changes are disjoint, and this JDK-only fixture removes the shell dependency entirely.
Closes #14