diff --git a/src/utils/Partitioner.cpp b/src/utils/Partitioner.cpp
index b4c24c5d908019649dcccb52b28ffd81df074091..410d873a2947d9314f168fe9d669ed430465cc10 100644
--- a/src/utils/Partitioner.cpp
+++ b/src/utils/Partitioner.cpp
@@ -20,10 +20,6 @@ Array<int> Partitioner::partition(const CSRGraph& graph)
          << rang::style::bold << commSize() << rang::style::reset
          << " parts\n";
 
-  MPI_Comm mpi_comm_;
-  MPI_Comm_dup(MPI_COMM_WORLD, &mpi_comm_);
-  MPI_Comm* mpi_comm = & mpi_comm_;
-
   int wgtflag = 0;
   int numflag = 0;
   int ncon = 1;
@@ -67,8 +63,12 @@ Array<int> Partitioner::partition(const CSRGraph& graph)
       perr() << "Metis Error\n";
       std::exit(1);
     }
+
+    MPI_Comm_free(&parmetis_comm);
   }
 
+  MPI_Group_free(&mesh_group);
+
   return part;
 }