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.
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.
This is the second part of an investigation where I tried to understand why an application was randomly crashing with an
AccessViolationException
. This part starts when, as I ran out of easy things to try, I decided to map the assembly code of the IsLockHeld
method to the original C++ code to understand exactly where it crashed.
Investigating a crash in a .NET application, caused by an AccessViolationException when inspecting the state of a lock.
In this series of article, we’re retracing how I debugged an
InvalidProgramException
, caused by a bug in the Datadog profiler, from a memory dump sent by a customer. This is the last part of the investigation, about figuring out what is wrong with the IL code.
In this series of article, we’re retracing how I debugged an InvalidProgramException, caused by a bug in the Datadog profiler, from a memory dump sent by a customer. In this part, we extract the dynamic IL from the memory dump.
In this series of article, we’re retracing how I debugged an InvalidProgramException, caused by a bug in the Datadog profiler, from a memory dump sent by a customer. The first part of the investigation is an introduction to using a memory dump from a .NET application to find the information you seek.