Repository navigation
Description
The windows-x64 Release AllSubsets_Mono_Minijit_RuntimeTests minijit leg is consistently crashing across many unrelated runtime test suites. The test names differ, but the processes all terminate with 0xC0000409; analysis of a collected dump identifies subcode 0x30, FAST_FAIL_SET_CONTEXT_DENIED.
This reproduced in rolling builds and is unrelated to the change in #133612. It appears that a Windows environment or security-policy change may have exposed a latent problem in Mono's generated-code unwind or context handling, but the exact trigger has not been established.
Affected builds
- PR build: 1591208, Helix job
d3010c6c-3eef-46ef-a125-ae081a4ef82a, 50 of 82 work items failed. - Rolling build: 1590497, Helix job
5da76109-d12c-405b-bb8f-9500d8d5896d. - Rolling build: 1591508, Helix job
6c58a5c6-015e-416b-b6f5-3b5f9c77d3f6. This build used [Test] Disable rundown in Block mode env test #133612's exact base commit,9c868a69706dd2ce2494fe9d746835ebac3fcb31. - Rolling build: 1592254, Helix job
3444827c-0bbf-4d08-b443-23fb979f4558. - Last observed passing rolling build: 1589719, Helix job
7e3b9d05-ed46-4c39-8c22-b20461fefac0, where all 81 Mono work items passed.
No src/mono product changes landed between the last observed passing build and the first affected build. Relevant intervening test changes also passed in their PR build, which makes a source regression in those tests unlikely.
Failure signature
Representative work-item logs, including GC and Regression_3, terminate with:
Exit Code: -1073740791
Expected: 100
Actual: -1073740791
END EXECUTION - FAILED
Analysis of corerun.exe.15456.dmp uploaded by the GC work item shows:
ExceptionCode: c0000409 (Security check failure or stack buffer overrun)
Subcode: 0x30 FAST_FAIL_SET_CONTEXT_DENIED
PROCESS_NAME: corerun.exe
FAILURE_BUCKET_ID: FAIL_FAST_SET_CONTEXT_DENIED_c0000409_coreclr.dll!Unknown
The relevant stack is:
ntdll!RcContinueExit
ntdll!KiUserExceptionDispatch
<Mono JIT-generated code>
coreclr!mono_jit_search_all_backends_for_jit_info+0x193d
coreclr!mono_object_get_virtual_method+0x2ef
coreclr!mono_runtime_exec_managed_code+0x340
coreclr!mono_jit_exec+0x5c3
coreclr!mono_main+0x2da3
coreclr!monovm_execute_assembly+0xcf
corerun
Scope
The crash affects at least 46 work items at the process level, spanning GC, Loader, JIT, SIMD, exception, type-system, and regression test suites. Four additional work items continued after child processes failed with the same status and then published individual failed test results. The failures occurred on multiple Helix machines within approximately one minute of starting, while other work items passed, so this is not a single defective host or a timeout.
Suggested investigation
- Compare process mitigation, CET, and machine-image policy changes between the passing Helix job
7e3b9d05-ed46-4c39-8c22-b20461fefac0and the first affected job5da76109-d12c-405b-bb8f-9500d8d5896d. - Inspect Mono's Windows generated-code unwind metadata and context restoration around
mono_jit_search_all_backends_for_jit_info. - Compare the current Mono path with the validation and context-handling changes made in Avoid reporting incorrect thread context to Watson #117522.
- Preserve and inspect the GC work item's
corerun.exe.15456.dmp.
Known Issue Error Message
DO NOT USE JSON BELOW IF THIS IS A BUILD BREAK otherwise build analysis will allow pull requests to merge that break the build worse. For a build break, do not use this issue form. Make a regular new issue.
Fill the error message using step by step known issues guidance.
{
"ErrorMessage": "",
"ErrorPattern": "",
"BuildRetry": false,
"ExcludeConsoleLog": false
}Report
Summary
| 24-Hour Hit Count | 7-Day Hit Count | 1-Month Count |
|---|---|---|
| 0 | 0 | 0 |
Activity
dotnet-policy-service commentedon Sep 11, 2026
Tagging subscribers to this area: @steveisok, @vitek-karas
See info in area-owners.md if you want to be subscribed.
lewing commentedon Sep 11, 2026
Follow-up: onset, independent dump evidence, and resolution priorities
A survey of 13 selected main
runtimebuilds from September 4-11, targeted September 3 boundary checks, and the latest tworuntime-extra-platformsbuilds separates this new Windows failure wave from earlier Mono regression-test failures.Onset and repeatability
Times below are UTC queue times. Counts refer to Helix work items, not individual tests.
bd707a42fb3bc307f70df2279c868a69706dabc1677630a1The three failed-work-item sets are identical. The latest run's 46 process failures occurred on 46 different machines; the first affected run used 30 distinct failing machines. This is not a single defective host.
The four additional groups in the latest run are
baseservices-exceptions,Exceptions,JIT_others, andRegression_2. Their parent commands returned success, but they published failed child-test results. Successful submission jobs and zero parent exit codes must not be used as evidence that these tests passed.Small representative case and independent dump evidence
JIT.CodeGenBringUpTests_dgives a useful passing/failing comparison:a0003NL;div2_d.dllpassed September 9 at 22:18:19 UTC with exit code 100.a0003T3;div2_d.dllterminated September 10 at 09:09:58 UTC with-1073740791.a000541, queuewindows.amd64.open.rt; passesArrayExc_d, then terminates atdiv2_d.All report the same coarse OS string,
Windows-11-10.0.26100-SP0. That does not establish identical servicing levels or mitigation policies.Independent parsing of the exception and module streams in the latest work item's corerun.exe.10496.dmp found:
This independently corroborates the subtype reported in the issue's different GC dump. It does not constitute a fully unwound native stack; native Windows debugging was not performed on the macOS investigation host. The generic "stack buffer overrun" description is not evidence of a buffer overwrite here.
The baseservices-exceptions console also distinguishes ordinary managed exceptions from the hardware-exception path: the ordinary case passes, while
mainhardwarereportsWrong exit code: 0xC0000409, expected 0x00000001.Trigger: evidence versus hypothesis
The last-good/first-bad source interval contains 12 commits, with no changes to
src/mono,src/coreclr/hosts/corerun,global.json, oreng/Version.Details.xml.Mono's Windows x64 vectored exception handling in
src/mono/mono/mini/exceptions-amd64.chandles hardware faults, modifies/restores the context, and returnsEXCEPTION_CONTINUE_EXECUTION. Together with the dump subtype and repeatability, this makes a Windows servicing, image, or mitigation-policy change exposing a Mono compatibility problem the leading hypothesis.The actual triggering change is not yet established. These observations do not prove CET specifically, an image regression specifically, or a particular runtime PR.
One refinement to the issue's suggested investigation: #117522 concerns CoreCLR Watson fatal-error context reporting. It may provide context, but it is not an established fix for Mono's normal hardware-exception continuation path.
Earlier Mono failures are separate
Runtime_133101: first observed in the September 3 evening main build after test addition [WIP] Fix assertion failed during remove empty try-catch-fault #133103. It failed with0xC0000005, not0xC0000409. Skip Runtime_133101 on Windows Mono MiniJIT #133444 narrowly quarantined Windows x64 Mono MiniJIT on September 9; [mono][minijit] Runtime_133101 crashes on Windows x64 #133442 tracks the underlying bug. September 9 main builds passed afterward. The currentRegression_ro_2console instead terminates atRuntime_127446.Runtime_133209: first observed September 4 evening after test addition [wasm] Narrow multi-use operands read out of long locals #133210, with unexpectedOverflowExceptionacross multiple Mono platforms. Disable Runtime_133209 narrowing cast test on Mono #133295 quarantined only the failing theory on September 5, referencing Fix behavior of (uint)val in Mono to saturating behavior #100368. This mitigated exposure, not the underlying conversion bug.Loopback_Successfailure remains unmatched in this investigation. None should be folded into this Windows context-continuation diagnosis.Recommended resolution path
7e3b9d05-ed46-4c39-8c22-b20461fefac0and first-bad job5da76109-d12c-405b-bb8f-9500d8d5896dwith Windows/Helix image owners: full OS servicing/UBR, native DLL versions, image deployment history, process context-IP validation, and CET/hardware stack-protection policy.div2_dand the hardware-exception case as small native-debugger targets. Inspect Mono's continuation targets, context restoration, and generated-code unwind metadata against Windows requirements.ReceiveAsync, butAcceptAsyncis outside that catch; expected reset handling must include that boundary while still requiring the healthy follow-up connection to succeed.No CI reruns or source modifications were made during this investigation. The immediate blocker has a tight onset window and a specific failure mechanism; identifying the environment/Mono interaction remains the next causal step.
Note
This analysis was generated with GitHub Copilot.
steveisok commentedon Sep 11, 2026
Any reason why we can't remove the windows run?
Temporarily disable Windows x64 Mono MiniJIT runtime tests (#133747)
Fix Mono Windows x64 hardware exception continuations (#133774)
Temporarily disable Windows x64 Mono MiniJIT runtime tests (dotnet#13…
Fix Mono Windows x64 hardware exception continuations (dotnet#133774)