One of our group members is using MPI_Send in his program without receiving. I am surprised why his program will finish. Here is the program: #include <mpi.h> #include <stdio.h> int main(int argc,char** argv) { int rank; int size; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD,&rank); MPI_Comm_size(MPI_COMM_WORLD,&size); int aa = 10; if(rank == 0) { MPI_Send(&aa, 1, MPI_INT, 1, 0,MPI_COMM_WORLD); } MPI_Barrier(MPI_COMM_WORLD); printf("%d, complete barrier!\n",rank); MPI_Finalize(); } When I run the above program with: mpiexec -n 2 ./mpi_send. The output is: 0, complete barrier! 1, complete barrier! In direct memory block for handle type REQUEST, 1 handles are still allocated [1] 8 at [0x00007fe79a7026b8], src/mpid/ch3/src/ch3u_eager.c[440] The warning tells me the send message is sent using eager protocol. Is it right behavior for an MPI_Send to return without actually delivering the data? Or is it user’s responsibility to pair all the send/receive calls. — Huiwei Lu Postdoc Appointee Mathematics and Computer Science Division, Argonne National Laboratory http://www.mcs.anl.gov/~huiweilu/