Carlos, MPI_Isend() does not automatically frees the buffer after it sends the message. (it simply cannot do it since the buffer might be pointing to a global variable or to the stack).
Can you please extract a reproducer from your program ? Out of curiosity, what if you insert an (useless) MPI_Wait() like this ? MPI_Test(req, &flag, &status); if (flag){ MPI_Wait(req, MPI_STATUS_IGNORE); free(buffer); } Cheers, Gilles On Sun, Jul 28, 2019 at 5:45 AM carlos aguni via users <users@lists.open-mpi.org> wrote: > > Hi Jeff, > > Thank you for your reply. > > If i don't free the program completes but I'm not sure whether MPI_Isend > automatically frees the buffer after it sends the message. Does it? > > I put a long sleep at the end to check the memory used using pmap. > > The pmap command reported I'm using around 2GB which I'm guessing it isn't > freeing it. > > Is there anything I could try? > > Regards, > C. > > On Mon, Jul 22, 2019 at 10:59 AM Jeff Squyres (jsquyres) <jsquy...@cisco.com> > wrote: >> >> > On Jul 21, 2019, at 11:31 AM, carlos aguni via users >> > <users@lists.open-mpi.org> wrote: >> > >> > MPI_Isend() >> > ... some stuff.. >> > flag = 0; >> > MPI_Test(req, &flag, &status); >> > if (flag){ >> > free(buffer); >> > } >> > >> > After the free() i'm getting errors like: >> > [[58327,1],0][btl_tcp_frag.c:130:mca_btl_tcp_frag_send] >> > mca_btl_tcp_frag_send: writev error (0x2b9daf474000, 128000000) >> > Bad address(1) >> > [[58327,1],0][btl_tcp_frag.c:130:mca_btl_tcp_frag_send] >> > mca_btl_tcp_frag_send: writev error (0x2b9daf473ee8, 19608) >> > Bad address(1) >> > pml_ob1_sendreq.c:308 FATAL >> >> Do you get the same error if you don't free()? >> >> -- >> Jeff Squyres >> jsquy...@cisco.com >> > _______________________________________________ > users mailing list > users@lists.open-mpi.org > https://lists.open-mpi.org/mailman/listinfo/users _______________________________________________ users mailing list users@lists.open-mpi.org https://lists.open-mpi.org/mailman/listinfo/users