The Wire · Showcase
JIT INTRINSICS BUG FIX UNBLOCKS STRESS TESTING, DEBUGGER FALLBACK RESTORED FOR NON-WINDOWS
By RepoJournal · Filed · About .NET
The runtime team patched a critical JIT assertion that was breaking stress-tailcall testing on methods with SuppressGCTransition calls, while simultaneously restoring managed debugging on non-Windows platforms.
The JIT compiler was incorrectly marking call+ret patterns for tail-call optimization before determining whether the callee was a named intrinsic [1]. When intrinsics like GC.KeepAlive get imported as non-CALL IR nodes, this left malformed return blocks that triggered assertions during GC poll insertion on methods containing SuppressGCTransition calls. That fix is now landed [2]. In parallel, the runtime team restored a critical fallback in the debugging layer that reconstructs register context from thread frame chains on platforms where ICorDebugDataTarget::GetThreadContext returns E_NOTIMPL [3]. This was removed in a previous commit and broke managed debugging stack walks on non-Windows platforms. The team caught it through internal Visual Studio testing. On the optimization side, the JIT now folds always-true isinst checks using PHI node analysis and improved type comparison logic [4], extending the reach of assertion-based optimizations. WinForms continues pulling codeflow updates from the main VMR [5] [6].
Action items
- → Test JIT stress modes on next runtime build to confirm intrinsic assertion fix dotnet/runtime [plan]
- → Verify managed debugging on non-Windows platforms with latest runtime changes dotnet/runtime [plan]
- → Monitor WinForms codeflow PR merges for any integration issues dotnet/winforms [monitor]
References
- [1] JIT: don't stress-tailcall named intrinsics (#122479) ↗ dotnet/runtime
- [2] JIT: don't stress-tailcall named intrinsics (#122479) (#128336) dotnet/runtime
- [3] Restore E_NOTIMPL fallback in DacDbiInterfaceImpl::GetContext (#128499) dotnet/runtime
- [4] JIT: fold isinst using reaching VNs and compareTypesForCast ↗ dotnet/runtime
- [5] [main] Source code updates from dotnet/dotnet ↗ dotnet/winforms
- [6] [main] Source code updates from dotnet/dotnet ↗ dotnet/winforms
FAQ
- What changed in .NET on May 24, 2026?
- The runtime team patched a critical JIT assertion that was breaking stress-tailcall testing on methods with SuppressGCTransition calls, while simultaneously restoring managed debugging on non-Windows platforms.
- What should .NET teams do about it?
- Test JIT stress modes on next runtime build to confirm intrinsic assertion fix • Verify managed debugging on non-Windows platforms with latest runtime changes • Monitor WinForms codeflow PR merges for any integration issues
- Which .NET repositories shipped on May 24, 2026?
- dotnet/runtime, dotnet/winforms