@ShadowJonathan My favourite is the second-order compiler bug.
The compiler has a bug in how it compiles feature A. But the compiler itself uses feature A to compile feature B. So if you take a compiler with the bug in feature A, and compile it with itself, it now also has a bug in how it compiles feature B.
Which is real fun to debug if the bug in feature A arose in the first place from a read error from a magnetic medium which the parity and/or error detection didn't detect. So you can look at the source code as much as you like, and not only does it not have a bug in how it handles feature B, but it also doesn't have a bug in how it handles feature A.
(The lesson? A naïve eight bit checksum per block isn't enough. The witchcraft? It was a long time ago, but I *think* it only took about three of us less than two days to get to the bottom of this.)