Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Assert that there is no memory leak (help scan-build).
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 6 Feb 2019 13:53:51 +0000 (14:53 +0100)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 6 Feb 2019 16:08:21 +0000 (17:08 +0100)
src/instr/instr_platform.cpp
src/s4u/s4u_Engine.cpp
src/smpi/bindings/smpi_pmpi_topo.cpp

index f0433c4..6a9ca45 100644 (file)
@@ -160,6 +160,7 @@ static void instr_netzone_on_creation(simgrid::s4u::NetZone& netzone)
   std::string id = netzone.get_name();
   if (simgrid::instr::Container::get_root() == nullptr) {
     simgrid::instr::NetZoneContainer* root = new simgrid::instr::NetZoneContainer(id, 0, nullptr);
+    xbt_assert(simgrid::instr::Container::get_root() == root);
 
     if (TRACE_smpi_is_enabled()) {
       simgrid::instr::ContainerType* mpi = root->type_->by_name_or_create<simgrid::instr::ContainerType>("MPI");
index 0576607..aa28e1a 100644 (file)
@@ -55,10 +55,11 @@ Engine::~Engine()
 /** @brief Retrieve the engine singleton */
 Engine* Engine::get_instance()
 {
-  if (s4u::Engine::instance_ == nullptr)
-    return new Engine(0, nullptr);
-  else
-    return s4u::Engine::instance_;
+  if (s4u::Engine::instance_ == nullptr) {
+    auto e = new Engine(0, nullptr);
+    xbt_assert(s4u::Engine::instance_ == e);
+  }
+  return s4u::Engine::instance_;
 }
 
 void Engine::shutdown()
index ddfa8dc..a3b94ba 100644 (file)
@@ -21,8 +21,11 @@ int PMPI_Cart_create(MPI_Comm comm_old, int ndims, int* dims, int* periodic, int
     return MPI_ERR_ARG;
   } else{
     simgrid::smpi::Topo_Cart* topo = new simgrid::smpi::Topo_Cart(comm_old, ndims, dims, periodic, reorder, comm_cart);
-    if(*comm_cart==MPI_COMM_NULL)
+    if (*comm_cart == MPI_COMM_NULL) {
       delete topo;
+    } else {
+      xbt_assert((*comm_cart)->topo() == topo);
+    }
     return MPI_SUCCESS;
   }
 }