From: Frederic Suter Date: Mon, 21 Mar 2016 22:12:43 +0000 (+0100) Subject: plug a i-am-everywhere leak X-Git-Tag: v3_13~336 X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/cb4883c820911c89e8edc37d1076bf1c1e6f0f51 plug a i-am-everywhere leak + 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 ;) --- diff --git a/examples/java/cloud/Master.java b/examples/java/cloud/Master.java index c1e13731d6..211b17b7dd 100644 --- a/examples/java/cloud/Master.java +++ b/examples/java/cloud/Master.java @@ -80,6 +80,7 @@ public class Master extends Process { for (int i = 0; i < vms.size(); i++) { vms.get(i).shutdown(); + vms.get(i).finalize(); } Msg.info("Master done."); } diff --git a/examples/java/cloud/energy/EnergyVMRunner.java b/examples/java/cloud/energy/EnergyVMRunner.java index 17d8e09be0..34d2cf54a2 100644 --- a/examples/java/cloud/energy/EnergyVMRunner.java +++ b/examples/java/cloud/energy/EnergyVMRunner.java @@ -67,5 +67,7 @@ public class EnergyVMRunner extends Process { vmHost1.shutdown(); vmHost3.shutdown(); + vmHost1.finalize(); + vmHost3.finalize(); } } diff --git a/examples/msg/energy/vm/vm.c b/examples/msg/energy/vm/vm.c index 96175d320c..34383f1dce 100644 --- a/examples/msg/energy/vm/vm.c +++ b/examples/msg/energy/vm/vm.c @@ -51,6 +51,8 @@ static int dvfs(int argc, char *argv[]) MSG_vm_shutdown(vm_host1); MSG_vm_shutdown(vm_host3); + MSG_vm_destroy(vm_host1); + MSG_vm_destroy(vm_host3); return 0; } diff --git a/src/s4u/s4u_host.cpp b/src/s4u/s4u_host.cpp index 892337cd67..d28b2a6743 100644 --- a/src/s4u/s4u_host.cpp +++ b/src/s4u/s4u_host.cpp @@ -43,6 +43,7 @@ Host::Host(const char* name) Host::~Host() { delete pimpl_cpu; + delete pimpl_netcard; delete mounts; }