Skip to content

[release/11.0] Use the interpreter GC decoder when inspecting interpreted frames - #136938

Open
github-actions[bot] wants to merge 1 commit into
release/11.0from
backport/pr-136553-to-release/11.0
Open

github-actions[bot] wants to merge 1 commit into
release/11.0from
backport/pr-136553-to-release/11.0

Conversation

@github-actions

@github-actions github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Backport of #136553 to release/11.0

/cc @davidwrighton

Customer Impact

  • Customer reported
  • Found internally

[Select one or both of the boxes. Describe how this issue impacts customers, citing the expected and actual behaviors and scope of the issue. If customer-reported, provide the issue number.]

Regression

  • Yes
  • No

[If yes, specify when the regression was introduced. Provide the PR or commit if known.]

Testing

[How was the fix verified? How was the issue missed previously? What tests were added?]

Risk

[High/Medium/Low. Justify the indication by mentioning how risks were measured and addressed.]

IMPORTANT: If this backport is for a servicing release, please verify that:

  • For .NET 8 and .NET 9: The PR target branch is release/X.0-staging, not release/X.0.
  • For .NET 10+: The PR target branch is release/X.0 (no -staging suffix).

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

…36553)

<!-- -->

## Summary

Use `InterpreterGcInfoDecoder` rather than the target-native
`GcInfoDecoder` when inspecting an interpreted frame in:

- `SfiNextWorker`, for reverse-P/Invoke detection during exception
propagation.
- `SafeToReportGenericParamContext`, for the generic-context prolog
length.
- `FindFirstInterruptiblePoint`, for the GC-reporting location when
unwinding between funclets.

Interpreter GC metadata has different encoding parameters and
normalization from native metadata. Select the decoder using the frame's
code manager, guarded by `FEATURE_INTERPRETER`, and preserve the
existing decoder for native frames.

Found while investigating #135821. This PR is
independently based on `main` and contains no Wasm metadata-format or
code-generation changes. The decoder mismatch predates that work; an
observable release-mode iOS failure has not been demonstrated.

## Validation

- `./build.sh clr.runtime -rc Checked` on this standalone branch:
passed, zero warnings and errors.
- Session-local caught-exception, generic-GC, and uncaught
reverse-P/Invoke probes on this standalone branch: passed with normal
execution and with `DOTNET_Interpreter='*' DOTNET_ReadyToRun=0`. The
uncaught probe terminated as expected and retained
`MessageFromMyException`.
- On the Wasm metadata branch, the reverse-P/Invoke probe reproduced the
missing-message/assertion failure before this fix and preserved the
exception message afterward; the checked browser runtime build also
passed. This is supplementary evidence, not a standalone-branch browser
test.
- `git diff upstream/main...HEAD --check`: passed.
- No new checked-in regression test; existing
`WasmBuildAppTest.ExceptionFromMain` caught the EH regression.
- iOS execution and the full test suites were not run.

> [!NOTE]
> This pull request description and code changes were generated with
GitHub Copilot.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 798665fd-8e9d-46c8-b56c-843764cdb3d1
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
12 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: @agocke
See info in area-owners.md if you want to be subscribed.

This branch has not been deployed

No deployments
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.

1 participant