On Fri, Feb 21, 2014 at 11:49 AM, Walter Woods <woodswalben@gmail.com> wrote:
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.

Thanks for your reply and looking at the boost::mpi source - I haven't got that far. I understand what you're saying, but the first few paragraphs of this page:

 http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node41.html

seems to indicate that MPI guarantees that sends and recvs are kept ordered on a single-threaded process not using MPI_ANY_SOURCE. If that is the case then boost::mpi should as well.
 
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.

I did change my development code to do this.

Hope that helps, 
Walt

It does, thanks!

Roy