GC.KeepAlive may not work the way you intend when using it in async methods.
The C# specification indicates that function pointers can only be used on static methods. This article explains why.
Part 1 of the series about using NativeAOT to write a .NET profiler in C#, learning many things about native interop in the process. In this part, we will see how to mimic a COM interface in C#.
Using NativeAOT and ClrMD to write a native WinDbg extension in .NET.
How to find an instance of System.Threading.Thread by id in WinDbg, with a .NET Core memory dump.
This article explains how AsyncLocal values are stored in .NET and how to retrieve them from a memory dump.
Browse memory structures from a memory dump in C#, just like you would with ClrMD, but in a more fluent way.
How to tell PerfView to stop grouping unresolved functions under the same “?!?” label.
Digging into a bug in the .NET ARM64 runtime, learning about dispatch stubs, and using that knowledge to diagnose a NullReferenceException.
This story begins when one of our integrations tests started got stuck on one PR that seemingly impacted unrelated code. This is a nice excuse to cover some concepts I haven’t touched in my previous articles, such as downloading the .NET symbols on Linux.