Changing too many things at the same time can easily get one into a problem.
My project at work is essentially a very fast emulator, which takes a program for a certain processor in source form (C++ and assembler) and creates a program which can be executed on a regular PC. Until recently, processing of assembler and C++ sources was radically different. That lead to a number of problems and we decided to change the approach and compile C++ into assembler using the provided SDK. Then we'll get only assembler sources to process.
Roughly at the same time, we got new SDK, and I've decided to try it. The great news were that the assembler can be run under Wine without problems. Excellent, so I've switched to this new SDK immediately.
But then, I've also inadvertently updated my Boost copy.
As the net result, I have a number of failing tests with the new version of the program, new version of SDK (which generates somewhat different code) and new version of Boost, and no clue where to start debugging.
Of course, at least the problem with Boost could have being prevented by using Subversion and reporting revision number during nightly build, but one thing at a time -- proper handling of 3rd party dependencies is a topic for another post.