When you see a Heisenbug in C, change your mind: it's NOT the compiler. It's you.
At least that's been my experience in almost 20 years of programming a lot of C and C++.
I've found my share of compiler bugs, particularly in embedded compilers, but 99%+ of the time the Heisenbugs are mine: stray pointers, stack overflows, buggy concurrency, unexpected interrupt timing, etc.
When you see a Heisenbug in C, it's probably NOT:
1. The hardware. 2. The compiler. 3. The OS.
It's not you (compiler), it's me.