Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
plug a i-am-everywhere leak
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Mon, 21 Mar 2016 22:12:43 +0000 (23:12 +0100)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Mon, 21 Mar 2016 22:12:43 +0000 (23:12 +0100)
 + delete pimpl_netcard when freeing a host
 + As the netcard of a physical host is shared by VMs running on it,
   it leads to double frees.
 + A solution is to explicity destroy the VMs when they are not needed
   anymore.
If one doesn't like it, feel free to simplify the VM stuff ;)

examples/java/cloud/Master.java
examples/java/cloud/energy/EnergyVMRunner.java
examples/msg/energy/vm/vm.c
src/s4u/s4u_host.cpp

index c1e13731d6bcb450de50d8b9b17816e65cafa9cb..211b17b7dd5a84c7c792859180972f621d998140 100644 (file)
@@ -80,6 +80,7 @@ public class Master extends Process {
 
     for (int i = 0; i < vms.size(); i++) {
       vms.get(i).shutdown();
 
     for (int i = 0; i < vms.size(); i++) {
       vms.get(i).shutdown();
+      vms.get(i).finalize();
     }
     Msg.info("Master done.");
   }
     }
     Msg.info("Master done.");
   }
index 17d8e09be04d5542e4b52e9e771ed195f6c7b1a6..34d2cf54a2beb54b55471698378f828fe677a8f9 100644 (file)
@@ -67,5 +67,7 @@ public class EnergyVMRunner extends Process {
 
     vmHost1.shutdown(); 
     vmHost3.shutdown(); 
 
     vmHost1.shutdown(); 
     vmHost3.shutdown(); 
+    vmHost1.finalize(); 
+    vmHost3.finalize(); 
   }
 }
   }
 }
index 96175d320c2be0c5eb3dbce5599e12bfaf0ba796..34383f1dce9c6bec370fdd9ce51fd4a5ede81fb3 100644 (file)
@@ -51,6 +51,8 @@ static int dvfs(int argc, char *argv[])
 
   MSG_vm_shutdown(vm_host1);
   MSG_vm_shutdown(vm_host3);
 
   MSG_vm_shutdown(vm_host1);
   MSG_vm_shutdown(vm_host3);
+  MSG_vm_destroy(vm_host1);
+  MSG_vm_destroy(vm_host3);
 
   return 0;
 }
 
   return 0;
 }
index 892337cd67b8588e1fe61245d34c91402e31f366..d28b2a67433db7fe834d690ed5c1a67d196a1628 100644 (file)
@@ -43,6 +43,7 @@ Host::Host(const char* name)
 
 Host::~Host() {
   delete pimpl_cpu;
 
 Host::~Host() {
   delete pimpl_cpu;
+  delete pimpl_netcard;
   delete mounts;
 }
 
   delete mounts;
 }