Well, in my case anyway I was test()'ing a single receive several times, and that was leading to the message.
In Roy's case, especially the test file, the problem is having multiple irecv's happening. Lookat the underlying request::handle_serialized_irecv implementation in boost/mpi/communicator.hpp - one recv is accomplished through several MPI_IRecv requests issued in sequence. If you have several irecvs running at once, then one is likely to get the other's data as its length.
In other words, if you want to receive multiple messages in the same tag, be sure to only have one IRecv() with that tag running at a time. Data may only be transferred serially (not in parallel) over a single tag anyhow.
Hope that helps,
Walt