For example:
on rising edge (reset):
sync = defaultValue;
...
... various processing constructs ...
...
if (event == someEvent) // Back at the Batcave
// The vilianous Fat finger Syndrome
// strikes again!
synch = someEventProcessing()
...
... various processing constructs ...
...
someSyncProcessing(sync) // Foiled again!
All occurances of the varible "sync" should have been spelled "sync" instead of "synch." I even read the line with the incorrect spelling and my brain "tokenized" it's symbolic meaning.
I looked at the code for a couple days before I found the typo. How do you prevent this when the language doesn't generate any errors? There was a work around in the code because somebody couldn't find the source of the "Black magic" causing the program's errant behavior. This obscurred the problem even more. (This code was actually paraphrased from a verilog program. But seems like it could be a problem in any language that allow this type of thing.)