A compound bug is a glitch in software code that is not caught in the first round of testing because it is hidden behind another bug. The two usually have to be far apart in the code, so that you will forget their dependence upon each other when proofing the code after testing to find bugs, and assume the first bug is the only problem. My favorite example from experience was in a program that wrote log files for something I was writing: first I was calling the function that initialized the files if they didn't exist yet for the wrong file, but I didn't catch that at first because I was formatting the filenames wrong at the open command. There were about four hundred lines between them, and another coder wrote the function calls, so it never even occurred to me to check for the compound bug after I caught the first.