Repository navigation
Fix platform startup hangs and allow newer .NET patches - #687
Closed
boblangley wants to merge 5 commits into
Closed
boblangley wants to merge 5 commits into
boblangley wants to merge 5 commits into
Conversation
awright18
reviewed
Oct 23, 2026
…-startup-failures
Keep the existing Launch signature and add LaunchWithResult so hosts can inspect an unexpected exit after cleanup. Report child exits through normal control flow and let callers choose their exit code. Cover cancellation, readiness, process exits, and genuine task faults.
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.
The launcher can wait indefinitely for ServiceControl after a bundled tool has already exited. Missing-runtime diagnostics are discarded when console output is hidden, so the user only sees “Waiting for ServiceControl to be available”.
Set
DOTNET_ROLL_FORWARD=LatestPatchin each tool's process environment by default, preserving an explicit caller override. This lets the bundled ServiceControl applications use a newer installed patch without requiring the exact patch in their runtime configuration. It keeps the minimum runtime requirement and puts the policy in the package that launches the tools.Monitor all four tool processes during startup and while the platform is running. An unexpected exit now fails
Launchwith the tool name, exit code, and recent stdout/stderr. Output is bounded to 8 KiB per stream and can still be shown live. On exit, cancel the readiness request, give children a shared five-second grace period, and stop remaining processes before removing configuration files. RavenDB's startup and shutdown tokens have separate lifetimes, and its temporary runtime policy is restored even when startup fails.Addresses the quickstart startup report in the launcher itself. This replaces the sample-level workaround proposed in Particular/docs.particular.net#8592.
Validation:
vstest.console.dll.Disablepolicy is preserved. Killing Audit after startup produces an Audit-specific error and cleans up the other children.Local testing ran on macOS arm64 with .NET 10.0.13 and .NET 8.0.32 for the embedded RavenDB server. The repository CI covers Windows and Linux.