From d2eb571eb0dde44e3b287ba8c5bca34d3d57313b Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Sun, 15 Sep 2024 13:59:33 +0200
Subject: [PATCH] Fix MPI memory leak

For reproducing sums, the allocated MPI operation was not freed.
---
 src/utils/ReproducibleSumMPI.hpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/utils/ReproducibleSumMPI.hpp b/src/utils/ReproducibleSumMPI.hpp
index d4b80eb5d..fc49c051b 100644
--- a/src/utils/ReproducibleSumMPI.hpp
+++ b/src/utils/ReproducibleSumMPI.hpp
@@ -43,6 +43,8 @@ allReduceReproducibleSum(const ReproducibleScalarSum<ArrayT, BoolArrayT>& s)
   BinType sum_bin = zero;
   MPI_Allreduce(&local_bin, &sum_bin, 1, mpi_bin_type, mpi_bin_sum_op, parallel::Messenger::getInstance().comm());
 
+  MPI_Op_free(&mpi_bin_sum_op);
+
   return sum_bin;
 }
 
@@ -68,6 +70,8 @@ allReduceReproducibleSum(const ReproducibleTinyVectorSum<ArrayT, BoolArrayT>& s)
   BinType sum_bin = zero;
   MPI_Allreduce(&local_bin, &sum_bin, 1, mpi_bin_type, mpi_bin_sum_op, parallel::Messenger::getInstance().comm());
 
+  MPI_Op_free(&mpi_bin_sum_op);
+
   return sum_bin;
 }
 
@@ -93,6 +97,8 @@ allReduceReproducibleSum(const ReproducibleTinyMatrixSum<ArrayT, BoolArrayT>& s)
   BinType sum_bin = zero;
   MPI_Allreduce(&local_bin, &sum_bin, 1, mpi_bin_type, mpi_bin_sum_op, parallel::Messenger::getInstance().comm());
 
+  MPI_Op_free(&mpi_bin_sum_op);
+
   return sum_bin;
 }
 
-- 
GitLab