By definition, Heisenbugs are sensitive to being observed: They appear sporadically during normal operation, but disappear when the developer attempts to track them down in debug mode. The very act of debugging eliminates the subtle timing interactions or other conditions that trigger these bugs into action.
It's no surprise, then, that Heisenbugs are often difficult, if not impossible, to eradicate. Nonetheless, developers can create applications that are resilient to these maddeningly elusive defects. They can, for example, use virtually synchronous replication (VSR), a technique described in a recent whitepaper by Chris Hobbs, a kernel developer at QNX.
A few days ago, QNX posted this paper on its website, along with a paper on memory analysis (co-authored by yours truly) and two papers on developing in-car telematics systems. Here they are: