Uh oh!
There was an error while loading. Please reload this page.
Revert "Resume after catch for interpreter via native EH" - #129362
Conversation
This reverts commit 4a1d144.
Tagging subscribers to this area: @agocke |
jkotas
commented
Jun 13, 2026
Reverting to stabilize CI |
There was a problem hiding this comment.
Pull request overview
This PR reverts the prior change set that enabled “resume after catch” for the interpreter via native EH, restoring the previous exception-boundary behavior and adjusting interpreter resume mechanics accordingly.
Changes:
- Removes
INSTALL_/UNINSTALL_RESUME_AFTER_CATCH_*handling from various VM exception-boundary sites (QCall, prestub, jit helpers, P/Invoke import, VSD resolve, GC helpers, etc.). - Reworks interpreter resume-after-catch plumbing by tracking an interpreter SP marker and updating resume/unwind helpers (notably in
InterpreterCodeManager::ResumeAfterCatchand interpreter execution). - Updates UM entry prestub unwind metadata on multiple architectures to use
UnhandledExceptionHandlerUnix.
Reviewed changes
Copilot reviewed 23 out of 23 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| src/coreclr/vm/wasm/helpers.cpp | Adjusts interpreter-related InlinedCallFrame reg display update on WASM. |
| src/coreclr/vm/virtualcallstub.cpp | Removes resume-after-catch handler usage from VSD resolve workers. |
| src/coreclr/vm/riscv64/asmhelpers.S | Changes UM entry prestub handler metadata on RISC-V. |
| src/coreclr/vm/qcall.h | Removes resume-after-catch handler from QCall begin/end macros. |
| src/coreclr/vm/prestub.cpp | Removes resume-after-catch handler usage and modifies prestub exception catch behavior. |
| src/coreclr/vm/loongarch64/asmhelpers.S | Changes UM entry prestub handler metadata on LoongArch64. |
| src/coreclr/vm/jithelpers.cpp | Removes resume-after-catch handler usage from IL throw/rethrow helpers. |
| src/coreclr/vm/interpexec.h | Clarifies interpreter calling/stack-pointer rationale in comments. |
| src/coreclr/vm/interpexec.cpp | Adds interpreter SP tracking macro and updates ResumeAfterCatchException flow. |
| src/coreclr/vm/i386/umthunkstub.S | Changes UM entry prestub handler metadata on x86 Unix. |
| src/coreclr/vm/gchelpers.cpp | Removes resume-after-catch handler usage from allocation failure helper. |
| src/coreclr/vm/frames.h | Adds non-WASM interpreter SP storage to InterpreterFrame. |
| src/coreclr/vm/frames.cpp | Uses interpreter SP marker for FP register unwind; adjusts interpreter-frame detection. |
| src/coreclr/vm/exceptmacros.h | Removes resume-after-catch handler macros; introduces new helper declaration. |
| src/coreclr/vm/exceptionhandling.h | Removes skip-managed-frames resume helper declaration. |
| src/coreclr/vm/exceptionhandling.cpp | Removes resume-after-catch handling wrapper usage and related helpers. |
| src/coreclr/vm/excep.cpp | Adds UnwindAndContinueResumeAfterCatch implementation and related support. |
| src/coreclr/vm/eetwain.cpp | Reworks interpreter resume-after-catch to unwind to interpreter SP and resume below context. |
| src/coreclr/vm/dllimport.cpp | Removes resume-after-catch handler from PInvokeImportWorker. |
| src/coreclr/vm/arm64/stubs.cpp | Adjusts interpreter-frame detection in InlinedCallFrame reg display update. |
| src/coreclr/vm/arm64/asmhelpers.S | Changes UM entry prestub handler metadata on ARM64. |
| src/coreclr/vm/amd64/umthunkstub.S | Changes UM entry prestub handler metadata on AMD64 Unix. |
| src/coreclr/vm/amd64/cgenamd64.cpp | Adjusts interpreter-frame detection in InlinedCallFrame reg display update. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
This comment has been minimized.
This comment has been minimized.
BrzVlad
commented
Jun 13, 2026
This would need to revert 380b84f as well, which I'm assuming is not related to the crash in question. |
jkotas
commented
Jun 13, 2026
Amended the PR |
🤖 Copilot Code Review — PR #129362Note This review was generated by GitHub Copilot. Holistic AssessmentMotivation: Justified. PR #128728 ("Resume after catch for interpreter via native EH") introduced a regression causing Approach: This is a revert of PR #128728 plus its follow-up fix commit 380b84f ("Add handling of RethrowAfterCatch exception in a few places"). The revert restores the original manual stack-unwinding approach for resume-after-catch in the interpreter, removing the macro-based C++ exception propagation mechanism that was causing the AV. Summary: ✅ LGTM. Clean revert of a regression-causing change, restoring the previous known-working interpreter resume-after-catch implementation. The code being restored was the working baseline before #128728. No new untested code paths are introduced. Detailed Findings✅ Revert Completeness — Both original PR and follow-up are coveredThe PR correctly reverts both:
This was flagged by ✅ Null Check Removal ( |
jkotas
commented
Jun 13, 2026
/ba-g The job running on agent NetCore-Public 124 ran longer than the maximum time of 180 minutes. |
Reverts #128728
Fixes#129270