Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
maxmin: be more explicit about the leaked variables
authorMartin Quinson <martin.quinson@loria.fr>
Wed, 24 May 2017 09:39:46 +0000 (11:39 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Wed, 24 May 2017 09:40:17 +0000 (11:40 +0200)
src/surf/maxmin.cpp
teshsuite/s4u/listen_async/listen_async.tesh

index 5d5cff5..0f156e3 100644 (file)
@@ -6,13 +6,14 @@
 
 /* \file callbacks.h */
 
-#include "xbt/sysdep.h"
+#include "maxmin_private.hpp"
 #include "xbt/log.h"
 #include "xbt/mallocator.h"
-#include "maxmin_private.hpp"
-#include <stdlib.h>
-#include <stdio.h>              /* sprintf */
+#include "xbt/sysdep.h"
+#include <cxxabi.h>
 #include <math.h>
+#include <stdio.h> /* sprintf */
+#include <stdlib.h>
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_maxmin, surf, "Logging specific to SURF (maxmin)");
 
 typedef struct s_dyn_light {
@@ -115,7 +116,12 @@ void lmm_system_free(lmm_system_t sys)
     return;
 
   while ((var = (lmm_variable_t) extract_variable(sys))) {
-    XBT_WARN("Variable %d still in system when freing it: this may be a bug", var->id_int);
+    int status;
+    char* demangled = abi::__cxa_demangle(typeid(*var->id).name(), 0, 0, &status);
+
+    XBT_WARN("Probable bug: a %s variable (#%d) not removed before the LMM system destruction.", demangled,
+             var->id_int);
+    xbt_free(demangled);
     lmm_var_free(sys, var);
   }
   while ((cnst = (lmm_constraint_t) extract_constraint(sys)))
index 184718e..a888ec0 100644 (file)
@@ -3,4 +3,4 @@ $ ./listen_async ${srcdir:=.}/../../../examples/platforms/small_platform.xml "--
 > [  0.000195] (test@Tremblay) Data successfully received from regular mailbox
 > [  0.000195] (test@Tremblay) Task listen works on asynchronous mailboxes
 > [  0.000195] (test@Tremblay) Data successfully received from asynchronous mailbox
-> [  0.000195] (maestro@) Variable 3 still in system when freing it: this may be a bug
+> [  0.000195] (maestro@) Probable bug: a simgrid::surf::NetworkCm02Action variable (#3) not removed before the LMM system destruction.