War stories from .NET team
summary
A set of real investigations: an access‑violation that reproduces on one machine only and turns out to be a single‑bit hardware corruption after 77k runs with 247 crashes; a metadata index overflow when a type table hits 0xFFFF that occurs roughly once every 17 years and is left unfixed because changing the spec breaks tools; and an HTTP pipelining bug that mixes responses caused by buffer lifetime reuse (bug introduced around 4.5 and exposed after a 4.7 change), fixed by disable pipelining as a workaround while using time‑travel debugging and insisting on minimal repro to diagnose and verify the real fixes.
AI-written summary · about
chapters (16)
- 0:00Intro
- 2:07First serious investigation
- 4:24Call stack
- 6:11Heap dumps
- 7:40Hardware issues
- 10:46Metadata
- 18:35Breaking changes
- 22:01Finance bug
- 27:48Networking
- 34:17HTTP Pipelining
- 35:53Timeouts
- 38:23Pipelining
- 40:28Buffer lifetime management
- 43:43Why so many customers
- 45:16Lesson learned
- 48:19Feedback
related talks
01h 02mWriting high performance code in .NET
01h 15mCSI .NET – Debugging .NET Applications
47mHow We Found a 2 GB/Day Leak in 5 Minutes – dotMemory Meets Akka.NET
01h 00mDiagnosing issues in ASP.NET Core Applications
53m.NET Debugging tricks you wish you knew
01h 01mInternals of Exceptions
31mSmall things we got wrong in .NET
53mDeep .NET Debugging
