Mandelbugs are especially common in multi-threaded applications. When a change in one thread causes an error in another, it really can show up randomly. For example, I once had a bug where a major object in my architecture was randomly becoming null. At first I thought it might be a heisenbug, since it acted differently when I debugged it. Turns out, the other thread was ending, and everything was getting cleaned up, including stuff I was still using. But it happened at a different point every time. This is one more reason why multi-threading can be a pain in the ass.