From 50fd1496591c2cb572f3a4092f92b1846b77bd82 Mon Sep 17 00:00:00 2001 From: Ionel Gog Date: Wed, 31 May 2017 09:31:51 +0100 Subject: [PATCH] Correctly update run_scheduler_at when scheduler didn't run. In some cases the scheduler does not have to run. In such cases the SchedulerStats.algorithm_runtime_ is set max_uint64. Previously, the code was directly using algorithm_runtime_ and coulse cause integer overflow. This change addresses this issue. Affected modules: sim Change-Id: I065ac766f646c7d2d1b2d6549c80405cd300bd53 --- src/sim/simulator.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/sim/simulator.cc b/src/sim/simulator.cc index a578e77df..009e8c0c3 100644 --- a/src/sim/simulator.cc +++ b/src/sim/simulator.cc @@ -208,8 +208,15 @@ uint64_t Simulator::ScheduleJobsHelper(uint64_t run_scheduler_at) { return event_manager_->GetTimeOfNextSchedulerRun( run_scheduler_at, scheduler_stats.scheduler_runtime_); } else { - return event_manager_->GetTimeOfNextSchedulerRun( - run_scheduler_at, scheduler_stats.algorithm_runtime_); + if (scheduler_stats.algorithm_runtime_ == + numeric_limits::max()) { + // Scheduler hasn't executed. + return event_manager_->GetTimeOfNextSchedulerRun( + run_scheduler_at, 0); + } else { + return event_manager_->GetTimeOfNextSchedulerRun( + run_scheduler_at, scheduler_stats.algorithm_runtime_); + } } } else if (FLAGS_solver_runtime_accounting_mode == "solver") { return event_manager_->GetTimeOfNextSchedulerRun(