Skip to content

Temporarily disable Windows x64 Mono MiniJIT runtime tests - #133747

Merged
lewing merged 1 commit into
dotnet:mainfrom
lewing:lewing-mono-minijit-failures
Sep 12, 2026
Merged

lewing merged 1 commit into
dotnet:mainfrom
lewing:lewing-mono-minijit-failures

Conversation

@lewing

@lewing lewing commented Sep 11, 2026

Copy link
Copy Markdown
Member

Summary

Remove only the Windows x64 AllSubsets_Mono_Minijit_RuntimeTests entry from eng/pipelines/runtime.yml, temporarily suspending that leg for PR and rolling builds.

The leg repeatedly fails across 46 process-level work items with FAST_FAIL_SET_CONTEXT_DENIED, as documented in #133702. This follows the discussion about removing the Windows run. A lane-level mitigation avoids scattering exclusions across unrelated tests while the systemic exception-continuation failure is investigated.

Linux/macOS MiniJIT runtime tests, Windows Mono library tests, and other Windows coverage remain unchanged. An adjacent ActiveIssue comment records the tracking issue and the requirement to re-enable the leg once the failure is resolved.

Related to #133702. This is a temporary CI mitigation, not a product fix; the issue should remain open.

Validation

  • Parsed the original and modified YAML and confirmed the only structural difference is removal of the single Windows x64 Mono MiniJIT runtime-test matrix entry; all other pipeline nodes are unchanged.
  • git diff --check passed.
  • No product build or runtime tests run: this changes pipeline scheduling only. Azure Pipelines template expansion was not run locally.

Note

This PR was generated with GitHub Copilot.

Remove only the Windows x64 MiniJIT runtime-test pipeline entry while the context-continuation failures tracked in dotnet#133702 are investigated. Preserve other Mono and Windows coverage and record the re-enable condition.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 5 pipeline(s).
11 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @akoeplinger, @matouskozak, @simonrozsival
See info in area-owners.md if you want to be subscribed.

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.

Copilot review overview

🟢 Approval recommended

The targeted CI lane is temporarily disabled while other platform coverage remains unchanged.

Review tier: Lite
Findings: None

What changed in this PR

Temporarily disables the failing Windows x64 Mono MiniJIT runtime-test pipeline leg.

Changes:

  • Removes the affected Windows x64 matrix entry.
  • Adds tracking guidance for re-enablement after issue #133702 is resolved.
File Description
eng/​pipelines/​runtime.yml Removes only the affected Windows x64 MiniJIT runtime-test job.

@lewing
lewing enabled auto-merge (squash) September 11, 2026 22:38
@lewing
lewing merged commit 77cc249 into dotnet:main Sep 12, 2026
175 of 185 checks passed
tannergooding added a commit that referenced this pull request Sep 12, 2026
## Summary

Fix Windows x64 Mono MiniJIT hardware-exception handling when Windows
validates exception-continuation addresses. The vectored exception
handler currently resumes directly at a dynamically generated managed
handler; affected processes terminate with
`FAST_FAIL_SET_CONTEXT_DENIED` instead of entering the catch.

Save the resolved managed handler context in existing thread-local
storage and resume first at a native runtime entry point, which restores
that context through Mono's existing restore trampoline. Supply the
Win64 entry-stack alignment and argument home area, and keep the
stack-overflow restoration context separate from the native
continuation. This does not change process mitigation settings or add
general CET support.

Add a three-case theory covering repeated divide-by-zero, overflow, and
null-reference exceptions with nested hardware exceptions in filters and
finally blocks. Restore the Windows x64 MiniJIT runtime-test lane
disabled by #133747 so this PR exercises the full lane.

Fixes #133702.

## Validation

- Built Release and Debug Mono on Windows x64.
- `div2_d`, `div2_ro`, `HardwareEh`, `unhandledTester`, and
`ExceptionInterop` pass with both native builds in MiniJIT mode.
- The same final `HardwareEh` binary exits with `0xC0000409` on the
saved unfixed runtime and passes on the fixed Release and Debug
runtimes. Verified that its generated entry point invokes all three new
theory cases. It also passes with the Release interpreter.
- Repeated local explicit-throw measurements overlap within measurement
uncertainty: baseline 2.070 us versus candidate 2.008 us. The unfixed
hardware-throw benchmark terminates, so there is no valid before/after
throughput ratio for that path.
- Verified that `eng/pipelines/runtime.yml` exactly matches its
pre-quarantine version. Full MiniJIT CI and cross-platform suites have
not been run locally.

> [!NOTE]
> This PR was generated with GitHub Copilot.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@dotnet-milestone-bot dotnet-milestone-bot Bot added this to the 12.0-preview1 milestone Sep 14, 2026
jtschuster pushed a commit to jtschuster/runtime that referenced this pull request Sep 18, 2026
…3747)

## Summary

Remove only the Windows x64 `AllSubsets_Mono_Minijit_RuntimeTests` entry
from `eng/pipelines/runtime.yml`, temporarily suspending that leg for PR
and rolling builds.

The leg repeatedly fails across 46 process-level work items with
`FAST_FAIL_SET_CONTEXT_DENIED`, as documented in dotnet#133702. This follows
the [discussion about removing the Windows
run](dotnet#133702 (comment)).
A lane-level mitigation avoids scattering exclusions across unrelated
tests while the systemic exception-continuation failure is investigated.

Linux/macOS MiniJIT runtime tests, Windows Mono library tests, and other
Windows coverage remain unchanged. An adjacent `ActiveIssue` comment
records the tracking issue and the requirement to re-enable the leg once
the failure is resolved.

Related to dotnet#133702. **This is a temporary CI mitigation, not a product
fix; the issue should remain open.**

## Validation

- Parsed the original and modified YAML and confirmed the only
structural difference is removal of the single Windows x64 Mono MiniJIT
runtime-test matrix entry; all other pipeline nodes are unchanged.
- `git diff --check` passed.
- No product build or runtime tests run: this changes pipeline
scheduling only. Azure Pipelines template expansion was not run locally.

> [!NOTE]
> This PR was generated with GitHub Copilot.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
jtschuster pushed a commit to jtschuster/runtime that referenced this pull request Sep 18, 2026
## Summary

Fix Windows x64 Mono MiniJIT hardware-exception handling when Windows
validates exception-continuation addresses. The vectored exception
handler currently resumes directly at a dynamically generated managed
handler; affected processes terminate with
`FAST_FAIL_SET_CONTEXT_DENIED` instead of entering the catch.

Save the resolved managed handler context in existing thread-local
storage and resume first at a native runtime entry point, which restores
that context through Mono's existing restore trampoline. Supply the
Win64 entry-stack alignment and argument home area, and keep the
stack-overflow restoration context separate from the native
continuation. This does not change process mitigation settings or add
general CET support.

Add a three-case theory covering repeated divide-by-zero, overflow, and
null-reference exceptions with nested hardware exceptions in filters and
finally blocks. Restore the Windows x64 MiniJIT runtime-test lane
disabled by dotnet#133747 so this PR exercises the full lane.

Fixes dotnet#133702.

## Validation

- Built Release and Debug Mono on Windows x64.
- `div2_d`, `div2_ro`, `HardwareEh`, `unhandledTester`, and
`ExceptionInterop` pass with both native builds in MiniJIT mode.
- The same final `HardwareEh` binary exits with `0xC0000409` on the
saved unfixed runtime and passes on the fixed Release and Debug
runtimes. Verified that its generated entry point invokes all three new
theory cases. It also passes with the Release interpreter.
- Repeated local explicit-throw measurements overlap within measurement
uncertainty: baseline 2.070 us versus candidate 2.008 us. The unfixed
hardware-throw benchmark terminates, so there is no valid before/after
throughput ratio for that path.
- Verified that `eng/pipelines/runtime.yml` exactly matches its
pre-quarantine version. Full MiniJIT CI and cross-platform suites have
not been run locally.

> [!NOTE]
> This PR was generated with GitHub Copilot.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants