diff --git a/src/experiments/weather-monitor/campaign.cc b/src/experiments/weather-monitor/campaign.cc index 1ad82456..614723c3 100644 --- a/src/experiments/weather-monitor/campaign.cc +++ b/src/experiments/weather-monitor/campaign.cc @@ -88,7 +88,7 @@ bool WeatherMonitorCampaign::run() // for every section in the trace between subsequent memory // accesses to that address ... - while(ps.getNext(&ev)) { + while (ps.getNext(&ev) && instr < WEATHER_NUMINSTR_TRACING) { // instruction events just get counted if (!ev.has_memaddr()) { // new instruction diff --git a/src/experiments/weather-monitor/experiment.cc b/src/experiments/weather-monitor/experiment.cc index 5d2c2b74..e0046586 100644 --- a/src/experiments/weather-monitor/experiment.cc +++ b/src/experiments/weather-monitor/experiment.cc @@ -88,6 +88,8 @@ bool WeatherMonitorExperiment::run() bp.setWatchInstructionPointer(WEATHER_FUNC_WAIT_END); bp.setCounter(WEATHER_NUMITER_TRACING); #else + // FIXME this doesn't work properly: trace is one instruction too short as + // tp is removed before all events were delivered // trace WEATHER_NUMINSTR_TRACING instructions // -> campaign-ready traces with identical lengths bp.setWatchInstructionPointer(ANY_ADDR);