Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

From: Gleb Natapov (glebn_at_[hidden])
Date: 2005-10-27 08:44:43


Return unused entry to free list before trying to allocate new one.
Otherwise the code may deadlock.

Index: ompi/mca/btl/openib/btl_openib_component.c
===================================================================
--- ompi/mca/btl/openib/btl_openib_component.c (revision 7878)
+++ ompi/mca/btl/openib/btl_openib_component.c (working copy)
@@ -590,6 +590,7 @@
                                                           &frag->base,
                                                           openib_btl->ib_reg[frag->hdr->tag].cbdata);
                 
+ OMPI_FREE_LIST_RETURN(&(openib_btl->recv_free_eager), (opal_list_item_t*) frag);
 #ifdef OMPI_MCA_BTL_OPENIB_HAVE_SRQ
                 if(mca_btl_openib_component.use_srq) {
                     OPAL_THREAD_ADD32((int32_t*) &openib_btl->srr_posted_high, -1);
@@ -601,7 +602,6 @@
 #ifdef OMPI_MCA_BTL_OPENIB_HAVE_SRQ
                 }
 #endif
- OMPI_FREE_LIST_RETURN(&(openib_btl->recv_free_eager), (opal_list_item_t*) frag);
                 count++;
                 break;
 
@@ -683,6 +683,8 @@
                                                           &frag->base,
                                                           openib_btl->ib_reg[frag->hdr->tag].cbdata);
                 
+ OMPI_FREE_LIST_RETURN(&(openib_btl->recv_free_max), (opal_list_item_t*) frag);
+
 #ifdef OMPI_MCA_BTL_OPENIB_HAVE_SRQ
                 if(mca_btl_openib_component.use_srq) {
                     OPAL_THREAD_ADD32((int32_t*) &openib_btl->srr_posted_low, -1);
@@ -695,7 +697,6 @@
 #ifdef OMPI_MCA_BTL_OPENIB_HAVE_SRQ
                 }
 #endif
- OMPI_FREE_LIST_RETURN(&(openib_btl->recv_free_max), (opal_list_item_t*) frag);
                 count++;
                 break;
 

--
			Gleb.