Skip to content

[ci-scan] Test failure: NativeAOT GC leg assert ASSERT_UNCONDITIONALLY in EHHelpers.cpp:600 #131565

Description

@github-actions

Build Information

Build: https://dev.azure.com/dnceng-public/public/_build/results?buildId=1530325
Build error leg or test failing: windows-x64 Checked NativeAOT_Pri1 - GC

Error Details

A NativeAOT runtime assertion fires while running the GC test group (runtime-nativeaot-outerloop, def 265) on the windows-x64 Checked NativeAOT_Pri1 leg. The failure reproduces in the immediately following build #1531134 on the same leg, so it is not a transient flake.

Running test: GC\Coverage\271010\271010.dll
Debug Assertion Violation
Expression: 'ASSERT_UNCONDITIONALLY'
File: D:\a\_work\1\s\src\coreclr\nativeaot\Runtime\EHHelpers.cpp, Line: 600
END EXECUTION - FAILED

First build it occurred: 1530325 (windows-x64 Checked NativeAOT_Pri1). Still present in follow-up build 1531134.

Error Message

{
  "ErrorMessage": [
    "Expression: 'ASSERT_UNCONDITIONALLY'",
    "File: D:\\a\\_work\\1\\s\\src\\coreclr\\nativeaot\\Runtime\\EHHelpers.cpp, Line: 600"
  ],
  "ErrorPattern": "",
  "BuildRetry": false,
  "ExcludeConsoleLog": false
}

Note

This issue was generated by an AI/Copilot-driven CI triage workflow.

Warning

Firewall blocked 2 domains

The following domains were blocked by the firewall during workflow execution:

  • awmgmcpg
  • dotnet.github.io

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "awmgmcpg"
    - "dotnet.github.io"

See Network Configuration for more information.

Generated by CI Outer-Loop Failure Scanner · 998.3 AIC · ⌖ 16.6 AIC · ⊞ 18.7K · ◷

Report

Build Repository Test Pull Request
1545347 dotnet/runtime tracing\eventpipe\reverseouter\reverseouter\reverseouter.cmd
1542248 dotnet/runtime GC.WorkItemExecution
1535331 dotnet/runtime GC.WorkItemExecution
1532833 dotnet/runtime GC.WorkItemExecution

Summary

24-Hour Hit Count 7-Day Hit Count 1-Month Count
1 2 4

Activity

  1. MichalStrehovsky commented on Jul 30, 2026

    @MichalStrehovsky
    Member

    @jkoritzinsky I assume this is another fallout from dropping the RequiresProcessIsolation, I assume some other test puts things into a bad state, but hard to say. I'm taking time off.

    As a curiosity, the test that is crashing here only runs with CoreCLR on Browser. I guess nobody reviews what Copilot does to tests anymore since it's "just test code" (I do not understand how we ended up allowing this test on CoreCLR Browser specifically).

    [ActiveIssue("https://github.com/dotnet/runtime/issues/5933", typeof(Test_271010), nameof(IsCoreClrOnNonBrowser))]

  2. dotnet-policy-service commented on Jul 30, 2026

    @dotnet-policy-service
    Contributor

    Tagging subscribers to this area: @agocke, @dotnet/ilc-contrib
    See info in area-owners.md if you want to be subscribed.

  3. github-actions commented on Jul 31, 2026

    @github-actions
    ContributorAuthor

    Workflow artifact: ci-fix
    Artifact kind: handoff
    Linked KBE: #131565

    Note

    AI/Copilot-generated triage note.

    This Known Build Error surfaces a NativeAOT native-runtime assertion (ASSERT_UNCONDITIONALLY in src/coreclr/nativeaot/Runtime/EHHelpers.cpp:600) firing while running the GC coverage test GC\Coverage\271010\271010.dll on the windows-x64 Checked NativeAOT_Pri1 - GC leg. This is a runtime/exception-handling code path in native C++ that must not be auto-patched by this workflow, so I could not produce even a best-effort code diff. Looping in owners so it can be fixed forward rather than muted.

    Root cause (best analysis)

    The assert lives in the NativeAOT exception-handling helpers (EHHelpers.cpp). Line 600 sits in the unconditional-failure path reached when the EH machinery encounters an unexpected state while unwinding/dispatching within the GC coverage stress test. Because it reproduces in the immediately following build (#1531134) on the same leg, it is a real, non-transient failure rather than a flake. Diagnosing it requires inspecting the native EH dispatch state at the assert (frame/unwind context), which is outside the safe scope of an automated library fix.

    Evidence

    Suggested reviewers / area contacts

    • Likely author: none identified with sufficient confidence.
    • Area owners (area-NativeAOT-coreclr): @agocke, @dotnet/ilc-contrib

    A fix will likely require examining the native EH state at EHHelpers.cpp:600 under this GC coverage test to determine why the exception-handling helper reaches the unconditional-assert path on NativeAOT/Windows-x64.

    Warning

    Firewall blocked 2 domains

    The following domains were blocked by the firewall during workflow execution:

    • awmgmcpg
    • httpbin.org

    To allow these domains, add them to the network.allowed list in your workflow frontmatter:

    network:
      allowed:
        - defaults
        - "awmgmcpg"
        - "httpbin.org"

    See Network Configuration for more information.

    Generated by CI Outer-Loop Failure Fixer · 615.8 AIC · ⌖ 15.4 AIC · ⊞ 17.1K · ◷

  4. linked a pull request that will close this issueDisable GC/Coverage/271010 on NativeAOT #132048on Aug 9, 2026
  5. jkoritzinsky commented on Aug 9, 2026

    @jkoritzinsky
    Member

    I believe the failing test is the actual one causing the failure. It tests OOM behavior and we likely OOM while handling the OOM (triggering the VEH inside the native NAOT runtime code). I'm having Copilot disable this test against this issue.

  6. reopened this on Aug 20, 2026
  7. added
    disabled-testThe test is disabled in source code against the issue
    on Aug 20, 2026
  8. MichalStrehovsky commented on Aug 20, 2026

    @MichalStrehovsky
    Member

    I believe the failing test is the actual one causing the failure. It tests OOM behavior and we likely OOM while handling the OOM (triggering the VEH inside the native NAOT runtime code). I'm having Copilot disable this test against this issue.

    Could you send me the dump you were looking at? Infra doesn't capture them for some reason and it doesn't repro for me locally (I tried the most recent runfo get-helix-payload -j d609b003-5abe-41bb-a244-0cb60690e6bd -w GC -o c:\hell\d609b003-5abe-41bb-a244-0cb60690e6bd\GC\).

    We do have a dedicated a dedicated OOM test that is passing (added in #125311).

    The test allocated 8 GB in smaller chunks, so I would actually expect it not to hit OOM (the test is disabled on non-browser CoreCLR because nobody bothered to really look at it - last run result in #5933 (comment) indicates it does not throw OOM when the test expects it which makes sense because 8 GB is not that much on 64bit).

  9. removed
    blocking-clean-ciBlocking PR or rolling runs of 'runtime' or 'runtime-extra-platforms'
    Known Build ErrorUse this to report build issues in the .NET Helix tab
    on Aug 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

  • Status
    No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions