I once wrote a dynamic-doce loader for the ARM3... worked perfectly in the debugger, but intermittantly crashed in release. I was tearing my hair out for days - I was fresh out of uni then, and I couldn't use the debugger (since that hid the bug). In the end, turns out you have to explicitly flush the I-cache on an ARM if you want to load-and-execute code.
After processing large amounts of data, I was merging multiple lucene indexes and got random null pointer exceptions. Surprisingly when I was trying to run the offending code alone, everything worked fine. Took me a while to figure that one out. Turned out that it was a bug in the JIT Compiler of Java 1.6.
Happens to me about once a year programming in Rails, nothing this intense, but still a 3-4 hour debugging session. If Rails were warning-safe it might eliminate a large class of these.