Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Energy, onHostDestruction: ensured ptr existence
authorMillian Poquet <millian.poquet@inria.fr>
Tue, 9 Feb 2016 15:30:16 +0000 (16:30 +0100)
committerMillian Poquet <millian.poquet@inria.fr>
Tue, 9 Feb 2016 15:30:16 +0000 (16:30 +0100)
Our simulator crashed after the main termination,
which was caused by the Simgrid energy plugin
calling host_energy->update() whereas host_energy
was null.

This commit simply adds a test about host_energy
being null or not before using it in function
onHostDestruction of src/surf/plugins/energy.cpp.

src/surf/plugins/energy.cpp

index 02ffe37..2035bb5 100644 (file)
@@ -235,9 +235,12 @@ static void onHostDestruction(simgrid::s4u::Host& host) {
   if (dynamic_cast<simgrid::surf::VirtualMachine*>(surf_host))
     return;
   HostEnergy *host_energy = host.extension<HostEnergy>();
   if (dynamic_cast<simgrid::surf::VirtualMachine*>(surf_host))
     return;
   HostEnergy *host_energy = host.extension<HostEnergy>();
-  host_energy->update();
-  XBT_INFO("Total energy of host %s: %f Joules",
-    host.name().c_str(), host_energy->getConsumedEnergy());
+  if (host_energy != nullptr)
+  {
+    host_energy->update();
+    XBT_INFO("Total energy of host %s: %f Joules",
+             host.name().c_str(), host_energy->getConsumedEnergy());
+  }
 }
 
 /* **************************** Public interface *************************** */
 }
 
 /* **************************** Public interface *************************** */