Hello,
Current ompi_free_list_grow implementation can fail before
max_elements_to_alloc is reached. This cause deadlock for me
sometimes. Included patch fix this.
Index: ompi/class/ompi_free_list.c
===================================================================
--- ompi/class/ompi_free_list.c (revision 7878)
+++ ompi/class/ompi_free_list.c (working copy)
@@ -104,9 +104,13 @@
size_t mod;
mca_mpool_base_registration_t* user_out = NULL;
- if (flist->fl_max_to_alloc > 0 && flist->fl_num_allocated + num_elements >
flist->fl_max_to_alloc)
- return OMPI_ERR_TEMP_OUT_OF_RESOURCE;
+ if (flist->fl_max_to_alloc > 0)
+ if (flist->fl_num_allocated + num_elements > flist->fl_max_to_alloc)
+ num_elements = flist->fl_max_to_alloc - flist->fl_num_allocated;
+ if (num_elements == 0)
+ return OMPI_ERR_TEMP_OUT_OF_RESOURCE;
+
if (NULL != flist->fl_mpool)
alloc_ptr = flist->fl_mpool->mpool_alloc(flist->fl_mpool,
(num_elements *
flist->fl_elem_size) + CACHE_LINE_SIZE + sizeof(ompi_free_list_memory_t),
--
Gleb.