Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Energy: Fixed host parsing assertion + mem leak
authorMillian Poquet <millian.poquet@inria.fr>
Wed, 30 Nov 2016 12:58:18 +0000 (13:58 +0100)
committerMillian Poquet <millian.poquet@inria.fr>
Wed, 30 Nov 2016 12:58:18 +0000 (13:58 +0100)
When parsing the platform file with energy,
using the old watt description syntax
"watt_min:watt_max" instead of
"watt_idle:watt_min:watt_max" led to obscure
OOB error, the error message should now be
clearer.

Also found a little memory leak,
msg_idle was not freed.

src/surf/plugins/energy.cpp

index 1cfbf5e..9a6cc76 100644 (file)
@@ -205,8 +205,8 @@ void HostEnergy::initWattsRangeList()
   for (int i=0; i< pstate_nb; i++) {
     /* retrieve the power values associated with the current pstate */
     xbt_dynar_t current_power_values = xbt_str_split(xbt_dynar_get_as(all_power_values, i, char*), ":");
   for (int i=0; i< pstate_nb; i++) {
     /* retrieve the power values associated with the current pstate */
     xbt_dynar_t current_power_values = xbt_str_split(xbt_dynar_get_as(all_power_values, i, char*), ":");
-    xbt_assert(xbt_dynar_length(current_power_values) > 1,
-        "Power properties incorrectly defined - could not retrieve min and max power values for host %s",
+    xbt_assert(xbt_dynar_length(current_power_values) == 3,
+        "Power properties incorrectly defined - could not retrieve idle, min and max power values for host %s",
         host->name().c_str());
 
     /* min_power corresponds to the idle power (cpu load = 0) */
         host->name().c_str());
 
     /* min_power corresponds to the idle power (cpu load = 0) */
@@ -220,6 +220,7 @@ void HostEnergy::initWattsRangeList()
       xbt_str_parse_double(xbt_dynar_get_as(current_power_values, 2, char*), msg_max)
     );
     power_range_watts_list.push_back(range);
       xbt_str_parse_double(xbt_dynar_get_as(current_power_values, 2, char*), msg_max)
     );
     power_range_watts_list.push_back(range);
+    xbt_free(msg_idle);
     xbt_free(msg_min);
     xbt_free(msg_max);
 
     xbt_free(msg_min);
     xbt_free(msg_max);