I believe my understanding of MPI_Probe is not correct. Here's what I have as a setup:

Two MPI processes, A and B. Process A sends a large message, M1 using tag T1, and a small message, M2 using tag T2. The recepient of both messages is B.

The order of sending the messages is M1 and then M2.

The process B however executes MPI_Probe to test if the message with tag T2 is available. B will accept M1 after it has received M2 first.

I am under the impression that using information gained from MPI_Probe, I can choose not to receive message M1, and instead look for M2.

However, I see that M2 is never received by B (although A confirms that both M1 and M2 have been sent).

I am little confused. Can someone explain why B cannot receive M2? At least, does MPI allow receiving messages in the order that I have just described?

Thanks a lot.

Devendra Rai.