The Wire · Showcase
MEMORY LEAK IN MACOS SSL CONTEXT THREATENS PRODUCTION DEPLOYMENTS
By RepoJournal · Filed · About .NET
A critical GCHandle leak in SafeDeleteSslContext on macOS has been silently draining handle table slots on every SSL connection, and the fix races with native callbacks in ways that demand immediate attention.
The runtime team shipped an emergency fix [1] for a GCHandle allocation that was never freed in the legacy macOS SecureTransport path, leaking one handle slot per SSL context. This is not theoretical: the team reproduced it as a reliable crash in SslStream tests. The fix itself carries risk because it races with in-flight Read/Write native callbacks, which means you need to test thoroughly before shipping to production. In parallel, the cDAC work continues to mature [2], with IsExceptionObject now properly walking method table hierarchies and validating against the legacy DAC. The async profiler test suite got hardened [3] to work on single-threaded WASM platforms by splitting multithreaded tests from basic ones and fixing Native AOT missing native IP issues. Across the dotnet ecosystem, codeflow PRs continue rolling in from aspnetcore [4], sourcelink [5], and efcore [6], keeping main synchronized. The Roslyn team tackled Razor integration test failures [7] by fixing DartLab deployment to use main VS installation instead of RoslynDev hive, eliminating file clashes and simplifying hive checks.
Action items
- → Test the macOS SafeDeleteSslContext fix [ref:1] against your SSL workloads before production deploy dotnet/runtime [immediate]
- → Review async profiler test changes [ref:5] if you run WASM or Native AOT builds dotnet/runtime [plan]
- → Monitor codeflow PRs from main [ref:6] [ref:7] [ref:10] for breaking changes in your dependencies dotnet/dotnet [monitor]
References
- [1] Fix GCHandle leak in OSX SafeDeleteSslContext (#128325) dotnet/runtime
- [2] [cDAC] Implement IsExceptionObject for cDAC ↗ dotnet/runtime
- [3] Make Async Profiler tests compatible with single threaded runtime. (#127762) dotnet/runtime
- [4] [main] Source code updates from dotnet/aspnetcore ↗ dotnet/dotnet
- [5] [main] Source code updates from dotnet/sourcelink ↗ dotnet/dotnet
- [6] [main] Source code updates from dotnet/efcore ↗ dotnet/dotnet
- [7] Fix Razor integration tests in DartLab ↗ dotnet/roslyn
FAQ
- What changed in .NET on May 26, 2026?
- A critical GCHandle leak in SafeDeleteSslContext on macOS has been silently draining handle table slots on every SSL connection, and the fix races with native callbacks in ways that demand immediate attention.
- What should .NET teams do about it?
- Test the macOS SafeDeleteSslContext fix [ref:1] against your SSL workloads before production deploy • Review async profiler test changes [ref:5] if you run WASM or Native AOT builds • Monitor codeflow PRs from main [ref:6] [ref:7] [ref:10] for breaking changes in your dependencies
- Which .NET repositories shipped on May 26, 2026?
- dotnet/runtime, dotnet/dotnet, dotnet/roslyn