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.
![](https://minidump.net/images/accessviolation-in-objectnative-islockheld-part-2-of-2-a703e484113c-1.webp)
Investigating a crash in a .NET application, caused by an AccessViolationException when inspecting the state of a lock.
![](https://minidump.net/images/accessviolation-in-objectnative-islockheld-part-1-of-2-7fae4b839f9a-3.webp)
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.
![](https://minidump.net/images/investigating-an-invalidprogramexception-from-a-memory-dump-part-3-of-3-c1d912075cb1-2.webp)
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.
![](https://minidump.net/images/investigating-an-invalidprogramexception-from-a-memory-dump-part-2-of-3-daaecd8f3cf4-1.webp)
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.
Even with years of experience, WebRequest managed to surprise me.
![](https://minidump.net/images/c-tricked-by-webrequest-209014d99653-1.webp)
Using startup hooks to automatically fetch GC metrics from any .net core application.
![](https://minidump.net/images/monitor-gc-stats-with-a-startup-hook-55aa03dedea3-1.webp)
How to inspect arbitrary values in the memory of a .net process on Linux… And find an unexpected bug in the process.
Non-exhaustive list of code patterns to avoid in C#, either because they are risky or perform poorly.