Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix mismatched alloc/free.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 6 Mar 2019 22:18:11 +0000 (23:18 +0100)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Fri, 8 Mar 2019 11:12:45 +0000 (12:12 +0100)
src/smpi/colls/reduce/reduce-NTSL.cpp
src/smpi/colls/reduce/reduce-mvapich-knomial.cpp
src/smpi/colls/reduce/reduce-ompi.cpp
src/smpi/colls/scatter/scatter-ompi.cpp
src/smpi/colls/smpi_default_selector.cpp

index 6d3dfa6..3f48c44 100644 (file)
@@ -149,7 +149,7 @@ int Coll_reduce_NTSL::reduce(void *buf, void *rbuf, int count,
                comm);
   }
 
-  free(tmp_buf);
+  smpi_free_tmp_buffer(tmp_buf);
   return MPI_SUCCESS;
 }
 }
index 1700f75..13454c2 100644 (file)
@@ -92,7 +92,7 @@ static int MPIR_Reduce_knomial_trace(int root, int reduce_knomial_factor,
 
     /* Finally, fill up the src array */
     if(recv_iter > 0) {
-        knomial_reduce_src_array = static_cast<int*>(smpi_get_tmp_sendbuffer(sizeof(int)*recv_iter));
+      knomial_reduce_src_array = new int[recv_iter];
     }
 
     mask = orig_mask;
@@ -211,7 +211,7 @@ int Coll_reduce_mvapich2_knomial::reduce (
     }
 
     if(src_array != NULL) {
-        xbt_free(src_array);
+      delete[] src_array;
     }
 
     if(rank != root) {
index be386b6..d6f2a85 100644 (file)
@@ -309,9 +309,9 @@ int smpi_coll_tuned_ompi_reduce_generic( void* sendbuf, void* recvbuf, int origi
  error_hndl:  /* error handler */
     XBT_DEBUG("ERROR_HNDL: node %d file %s line %d error %d\n",
                    rank, __FILE__, line, ret );
-    if( inbuf_free[0] != NULL ) free(inbuf_free[0]);
-    if( inbuf_free[1] != NULL ) free(inbuf_free[1]);
-    if( accumbuf_free != NULL ) free(accumbuf);
+    smpi_free_tmp_buffer(inbuf_free[0]);
+    smpi_free_tmp_buffer(inbuf_free[1]);
+    smpi_free_tmp_buffer(accumbuf);
     return ret;
 }
 
index 1d5255c..c4c41b0 100644 (file)
@@ -165,7 +165,7 @@ int Coll_scatter_ompi_binomial::scatter(void* sbuf, int scount, MPI_Datatype sdt
 
  err_hndl:
     if (NULL != tempbuf)
-      free(tempbuf);
+      smpi_free_tmp_buffer(tempbuf);
 
     XBT_DEBUG("%s:%4d\tError occurred %d, rank %2d", __FILE__, line, err, rank);
     return err;
index 7b6899e..d6126c7 100644 (file)
@@ -237,10 +237,7 @@ int Coll_reduce_default::reduce(void *sendbuf, void *recvbuf, int count, MPI_Dat
     int index = 0;
     for (int src = 0; src < size; src++) {
       if (src != root) {
-        if (not smpi_process()->replaying())
-          tmpbufs[index] = xbt_malloc(count * dataext);
-         else
-           tmpbufs[index] = smpi_get_tmp_sendbuffer(count * dataext);
+        tmpbufs[index] = smpi_get_tmp_sendbuffer(count * dataext);
         requests[index] =
           Request::irecv_init(tmpbufs[index], count, datatype, src, system_tag, comm);
         index++;