Skip to content

Add ProcessInfo3 large-payload negative test#5918

Open
tommcdon wants to merge 1 commit into
dotnet:mainfrom
tommcdon:dev/tommcdon/ds-ipc-large-payload-handling
Open

Add ProcessInfo3 large-payload negative test#5918
tommcdon wants to merge 1 commit into
dotnet:mainfrom
tommcdon:dev/tommcdon/ds-ipc-large-payload-handling

Conversation

@tommcdon

@tommcdon tommcdon commented Jul 8, 2026

Copy link
Copy Markdown
Member

Adds a GetProcessInfo test that drives the target's command line long enough that the serialized ProcessInfo3 payload reaches the top of the uint16_t message-size range, and verifies the runtime responds with a well-formed server error while staying alive. The test calibrates against a live target so it computes the required command-line length across platforms and runtime builds, and runs only against .NET 11.

Adds a GetProcessInfo test that drives the target's command line long
enough that the serialized ProcessInfo3 payload reaches the top of the
uint16_t message-size range, and verifies the runtime responds with a
well-formed server error while staying alive. The test calibrates
against a live target so it computes the required command-line length
across platforms and runtime builds, and runs only against .NET 11.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@tommcdon tommcdon requested a review from a team as a code owner July 8, 2026 17:17
Copilot AI review requested due to automatic review settings July 8, 2026 17:17

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new negative test in the NETCore.Client test suite to validate that .NET 11+ runtimes gracefully reject oversized ProcessInfo3 responses (near the uint16_t IPC message-size limit) without crashing the target process.

Changes:

  • Introduces a calibration step to compute per-platform/per-runtime payload sizing based on live GetProcessInfo output.
  • Sweeps a range of command-line lengths intended to cross the IPC payload overflow boundary and asserts the runtime returns a well-formed server error and remains alive.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +57 to +61
[SkippableTheory, MemberData(nameof(Configurations))]
public Task OversizeProcessInfoPayloadIsRejectedTest(TestConfiguration config)
{
return OversizeProcessInfoPayloadIsRejectedTestCore(config, useAsync: true);
}
Comment on lines +160 to +162
// The regression: the target must never crash, whatever the command-line length.
Assert.False(Process.GetProcessById(runner.Pid).HasExited, $"Target process crashed for argument length {argLength}.");
}
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.

3 participants