Fix CanReadArrayOfAnySize timeout on checked coreclr by skipping the 2 GB case on slow runtimes#126006
Fix CanReadArrayOfAnySize timeout on checked coreclr by skipping the 2 GB case on slow runtimes#126006
Conversation
…aseRuntime condition Co-authored-by: danmoseley <6385855+danmoseley@users.noreply.github.com> Agent-Logs-Url: https://github.com/dotnet/runtime/sessions/185c955f-9d8a-4286-94bf-f0af9fc6b65f
There was a problem hiding this comment.
Pull request overview
This PR updates a resource-intensive System.Formats.Nrbf test to avoid timing out when executed on non-Release runtimes (notably Checked CoreCLR), where additional runtime validation makes the existing workload too slow.
Changes:
- Add
PlatformDetection.IsReleaseRuntimeto theConditionalTheorygatingEdgeCaseTests.CanReadArrayOfAnySize, skipping it on Checked/Debug runtimes.
adamsitnik
left a comment
There was a problem hiding this comment.
@copilot apply my suggestion, but make sure it builds and tests are passing before you push the commit
…f ConditionalTheory Co-authored-by: adamsitnik <6011991+adamsitnik@users.noreply.github.com> Agent-Logs-Url: https://github.com/dotnet/runtime/sessions/127eb19e-8537-496a-aeb8-6a23a106f8cd
Head branch was pushed to by a user without write access
adamsitnik
left a comment
There was a problem hiding this comment.
LGTM, thank you @danmoseley !
[Theory] does not handle SkipTestException - it treats the throw as a test failure. [ConditionalTheory] wires up a custom test invoker that catches SkipTestException and reports the test as skipped. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This comment has been minimized.
This comment has been minimized.
🤖 Copilot Code Review — PR #126006Holistic AssessmentMotivation: The PR addresses a real, frequently recurring CI timeout — Approach: The fix replaces the compile-time guard with a runtime check using Summary: ✅ LGTM. The change is minimal, correct, and well-motivated. It fixes the CI timeout while preserving all smaller test cases across all configurations — and actually increases test coverage by removing the overly broad 64-bit attribute-level skip. The area owner has approved and the latest commit applies their final suggestion. Detailed Findings✅ Correctness — Skip logic is soundThe runtime skip guard correctly skips the 2 GB case when any of these conditions hold:
These are OR'd, which is correct. The existing OOM catch (line 87–90) is preserved as a safety net for memory-constrained 64-bit release environments. ✅ Test coverage — Improved over baselineThe original ✅
|
EdgeCaseTests.CanReadArrayOfAnySizerepeatedly times out (~14+ min) on thechecked coreclr windows x64 ReleaseCI leg. The 2 GB array case (Array.MaxLength = 2,147,483,591) was previously gated by#if RELEASE && NET, enabling it for Release library builds. However, checked coreclr's extra assertions/validation make processing a 2 GB array prohibitively slow.Description
Instead of skipping all test cases on non-release runtimes, the fix adds a targeted in-method skip guard for only the 2 GB case. The
#if RELEASE && NETpreprocessor guard and[ConditionalTheory]are replaced with a plain[Theory]and a runtime check inside the method body:The smaller cases (100, 64_001, 127_000) continue to run on all platforms and runtime configurations. The 2 GB case is skipped only when running on a non-64-bit process, a non-release (checked/debug) runtime, or Mono — where it would time out or be impractical.
Original prompt
This section details on the original issue you should resolve
<issue_title>System.Formats.Nrbf.Tests.EdgeCaseTests.CanReadArrayOfAnySize times out on checked coreclr</issue_title>
<issue_description>## Build Information
Build: https://dev.azure.com/dnceng-public/public/_build/results?buildId=1348315
Leg Name: Libraries Test Run checked coreclr windows x64 Release
Error Message
{ "ErrorMessage": ["CanReadArrayOfAnySize", "timed out"], "BuildRetry": false, "ExcludeConsoleLog": false }Description
System.Formats.Nrbf.Tests.EdgeCaseTests.CanReadArrayOfAnySizetimes out after 14+ minutes on thechecked coreclr windows x64 Releaseleg. The test runs as a long-running test until the Helix work item is killed.Helix log: https://helix.dot.net/api/2019-06-17/jobs/c6faf158-7c28-4acb-bec6-ddcc415ba5e5/workitems/System.Formats.Nrbf.Tests/console
Previous occurrence: #110285 (closed December 2024)
Pull request where observed: #125961 (codeflow update, unrelated to the failure)
Known issue validation
Build: 🔎 https://dev.azure.com/dnceng-public/public/_build/results?buildId=1348315
Error message validated:
[CanReadArrayOfAnySize timed out]Result validation: ✅ Known issue matched with the provided build.
Validation performed at: 3/23/2026 11:03:41 PM UTC
Report
🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.