At Rapita we have heard most tales about unusual coding and debugging issues. Here’s one we thought you might be interested in.
A colleague was debugging an RTOS via a serial line debugger. He made a fix, uploaded the changes and then stepped through the code at source level and at assembler level. For some reason this didn't seem to fix the problem.
Much later, he discovered the debugger upload was itself at fault. It computed a CRC of the code, found that this was the same as the CRC of the code on the target, so didn't bother uploading the new code. When running single step, it displayed the updated code, but executed the old code.
Identical CRCs are usually a remote possibility, but it certainly didn’t help that the CRC algorithm was buggy anyway.