You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[ci-scan] Test failure: NativeAOT GC leg assert ASSERT_UNCONDITIONALLY in EHHelpers.cpp:600 #131565
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.
@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).
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.
Possible related PR: none identified with sufficient confidence.
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:
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.
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).
Activity
MichalStrehovsky commentedon Jul 30, 2026
@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).
runtime/src/tests/GC/Coverage/271010.cs
Line 19 in 2f1e024
dotnet-policy-service commentedon Jul 30, 2026
Tagging subscribers to this area: @agocke, @dotnet/ilc-contrib
See info in area-owners.md if you want to be subscribed.
github-actions commentedon Jul 31, 2026
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_UNCONDITIONALLYinsrc/coreclr/nativeaot/Runtime/EHHelpers.cpp:600) firing while running the GC coverage testGC\Coverage\271010\271010.dllon thewindows-x64 Checked NativeAOT_Pri1 - GCleg. 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
windows-x64 Checked NativeAOT_Pri1 - GC(runtime-nativeaot-outerloop, def 265)GC\Coverage\271010\271010.dllSuggested reviewers / area contacts
area-NativeAOT-coreclr):@agocke,@dotnet/ilc-contribA fix will likely require examining the native EH state at
EHHelpers.cpp:600under 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:
awmgmcpghttpbin.orgSee Network Configuration for more information.
jkoritzinsky commentedon Aug 9, 2026
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.
Disable GC/Coverage/271010 on NativeAOT (#132048)
MichalStrehovsky commentedon Aug 20, 2026
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).