Skip to content

Make sure the interpreter code is published before the native code for a method - #134137

Merged
BrzVlad merged 2 commits into
dotnet:mainfrom
BrzVlad:fix-clrinterp-stub-publish
Sep 23, 2026
Merged

BrzVlad merged 2 commits into
dotnet:mainfrom
BrzVlad:fix-clrinterp-stub-publish

Conversation

@BrzVlad

@BrzVlad BrzVlad commented Sep 17, 2026 •

Copy link
Copy Markdown
Member

Consider the scenario if the precode is patched before publishing the interpreter code to the MethodDesc. If the precode is not pointing to the prestub, in PrepareInterpreterCode we would no longer enter DoPrestub then we might observe that the interpreter code is still null, in which case we poison it. When the thread that was doing the compilation tries now to publish the interpreter code, it will encounter the poisoned value and assert.

This ordering was enforced in other places, in #130026, but this path was missed. This failure started happening on the new interpreter libraries pipeline that disables jit since there we end up interpreting some stubs.

Fixes #133771

…r a method

Consider the scenario if the precode is patched before publishing the interpreter code to the MethodDesc. If the precode is not pointing to the prestub, in `PrepareInterpreterCode` we would no longer enter `DoPrestub` then we might observe that the interpreter code is still null, in which case we poison it. When the thread that was doing the compilation tries now to publish the interpreter code, it will encounter the poisoned value and assert.
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 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: @JulieLeeMSFT, @BrzVlad, @janvorli
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.

🟢 Approval recommended

No blocking issues were identified; only a minor comment cleanup was noted.

Pull request overview

This pull request fixes interpreter-code publication ordering to prevent races during prestub setup.

Changes:

  • Publishes interpreter code before redirecting the precode.
  • Reads interpreter data directly from the generated stub.
  • Documents the required ordering.
File summaries
File Summary
src/coreclr/vm/prestub.cpp Fixes interpreter-code publication ordering.
Review details
  • Files reviewed: 1/1 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread src/coreclr/vm/prestub.cpp Outdated
Correct comment duplication in prestub.cpp

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings September 21, 2026 13:54

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 publication ordering fix addresses the identified interpreter race.

Review effort: Lite
Findings: None

Resolved since last review (1)

@BrzVlad
BrzVlad merged commit bcd5bcb into dotnet:main Sep 23, 2026
111 checks passed
@dotnet-milestone-bot dotnet-milestone-bot Bot added this to the 12.0-preview1 milestone Sep 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

3 participants