On the beta of my first shipping C# program, a customer reported a serious bug. I had my team send him a new version with extra logging to pinpoint the problem. But we were crushed the next day when we received a new set of logs indicating our original theory was completely wrong. The new logging we added wasn't appearing at all, which seemed to indicate the code wasn't even reaching the function we suspected of being buggy.
My team created an even newer version of the DLL with even more logging. But the exact same thing happened again when the customer sent us a log that was virtually identical to the first two. Somehow, the function containing our extra logging wasn't being reached. We began to suspect the customer might not be installing the new DLLs properly.
So we re-sent him the exact same DLL that we sent him earlier and told him it was an even newer version with even more logging. But this time we had our technical support representative talk to the customer on the phone, subtly guiding the installation: "OK, I just mailed you the new DLL. Maybe this will fix it. Just like you did before, all we have to do is go to ‘C:\Program Files\OurProduct’ and copy the file there.... Here, let me wait while you do that now so you can tell us if it doesn't work.... OK, it's done now? Great!" Sure enough, this time when the customer sent us the logs, all the new logging information was there, just as we expected. Both times before, the customer had somehow copied the DLL in the wrong place, or maybe he hadn't even copied the DLL at all.
If we'd been smart, we would have had that first logging DLL we sent him write "THIS IS THE NEW VERSION" in the log. That way, we would have instantly known the customer wasn't installing the new DLL, rather than having to guess.