A Series of Unfortunate Bugs
summary
Four post-mortems show real failures and concrete fixes: an integer-promotion undefined behavior causes a decade-old database crash and is fixed with a one-liner fix (promote to 64-bit); a 32-bit release-only crash stems from a static buffer overflow that corrupts adjacent stack data after function inlining; a sporadic startup deadlock comes from GCC 4.2 global mutex interaction with local static initialization; a refactor breaks assumptions around setjmp/longjmp, causing undefined behavior. Debugging uses gdb watchpoints, regression isolation, Valgrind, address sanitizer and better logs; lessons stress sanitizers, pair debugging, and post-mortems.
AI-written summary · about
chapters (19)
- 0:00Intro
- 0:14A Series of Unfortunate Bugs Satabdi Das
- 1:15Simple Bugs Complex Behaviors
- 6:19A simple bug A simple fix!
- 6:37What did I learn?
- 9:13Have helpful logs!
- 13:27Right tools & safer coding!
- 13:56No shotgun debugging!
- 18:35Difficult to reason Code review or tools not helpful
- 19:07Talk about your bugs!
- 19:40Memory helps you find creative solution to a problem
- 20:11Refactoring bug!
- 21:09Crash in the optimized executable!
- 22:08Undefined behavior
- 22:44Debugging Principles
- 24:15C++ is for smart people
- 24:55C++ is for hard working people
- 25:21Start talking Stop the culture of blaming Believe that you can fix the bug
- 26:10See an unfortunate bug?
related talks
54mC++ Common Knowledge
50mSmashing the Stack: Let’s Make It Less Fun And Unprofitable!
34mHidden in Plain Sight: Corner Case Defects
49mEverything is broken and that's Okay!
40mLessons from two decades of writing bad code
14mBugs from 1843 to the present day
11mFix your hardest bugs with ease with Time Travel Debugging - Session Interview With Greg Law
51mProgramming's Greatest Mistakes
