MEPX
Chapter 10 of 10All chapters

Chapter 10 of 10

The hard ones

Intermittent, environment-specific, invisible.

When it only fails sometimes

Intermittent failures usually mean timing, shared state or ordering. Look for concurrency, caches, clocks and anything global before suspecting the compiler.

  • Works on my machine means a difference in version, config, data or permissions.
  • Compare the two environments systematically rather than by intuition.

Knowing when to stop

Explaining the problem out loud, taking a break or asking a colleague resolves stuck debugging more often than another hour of staring. The bug is a wrong belief, and those are hard to see alone.