diff --git a/fuzzers/FRET/src/systemstate/observers.rs b/fuzzers/FRET/src/systemstate/observers.rs index 5ba0d3941f..30ff8b2e4c 100644 --- a/fuzzers/FRET/src/systemstate/observers.rs +++ b/fuzzers/FRET/src/systemstate/observers.rs @@ -221,11 +221,12 @@ fn refine_system_states(mut input: Vec) -> (Vec, states: &HashMap) -> Vec<(u64, String)> { let mut ret = Vec::new(); let mut initial_released = false; for (_n, i) in trace.iter().enumerate() { + // The first release starts from xPortPendSVHandler if !initial_released && i.start_capture.0 == CaptureEvent::ISREnd && i.start_capture.1 == "xPortPendSVHandler" { let start_state = states.get(&i.start_state).expect("State not found"); initial_released = true; @@ -234,6 +235,7 @@ fn get_releases(trace: &Vec, states: &HashMap, states: &HashMap, resp: &Vec<(u64, String) if ready.contains_key(&next_resp.1) { if ready[&next_resp.1] >= next_resp.0 { if let Some(lr) = last_response.get(&next_resp.1) { - // eprintln!("Task {} response at {:.1}ms before next release at {:.1}ms. Fallback to last response at {:.1}ms.", next_resp.1, crate::time::clock::tick_to_time(next_resp.0).as_micros() as f32/1000.0, crate::time::clock::tick_to_time(ready[&next_resp.1]).as_micros() as f32/1000.0, crate::time::clock::tick_to_time(*lr).as_micros() as f32/1000.0); + eprintln!("Task {} response at {:.1}ms before next release at {:.1}ms. Fallback to last response at {:.1}ms.", next_resp.1, crate::time::clock::tick_to_time(next_resp.0).as_micros() as f32/1000.0, crate::time::clock::tick_to_time(ready[&next_resp.1]).as_micros() as f32/1000.0, crate::time::clock::tick_to_time(*lr).as_micros() as f32/1000.0); // Sometimes a task is released immediately after a response. This might not be detected. // Assume that the release occured with the last response ret.push((*lr, next_resp.0, next_resp.1.clone())); @@ -368,13 +390,13 @@ fn get_release_response_pairs(rel: &Vec<(u64, String)>, resp: &Vec<(u64, String) } } else { if let Some(lr) = last_response.get(&next_resp.1) { - // eprintln!("Task {} response at {:.1}ms not found in ready list. Fallback to last release at {:.1}ms.", next_resp.1, crate::time::clock::tick_to_time(next_resp.0).as_micros() as f32/1000.0, crate::time::clock::tick_to_time(*lr).as_micros() as f32/1000.0); + eprintln!("Task {} response at {:.1}ms not found in ready list. Fallback to last release at {:.1}ms.", next_resp.1, crate::time::clock::tick_to_time(next_resp.0).as_micros() as f32/1000.0, crate::time::clock::tick_to_time(*lr).as_micros() as f32/1000.0); // Sometimes a task is released immediately after a response. This might not be detected. // Assume that the release occured with the last response ret.push((*lr, next_resp.0, next_resp.1.clone())); last_response.insert(&next_resp.1, next_resp.0); } else { - // eprintln!("Task {} response at {:.1}ms not found in ready list", next_resp.1, crate::time::clock::tick_to_time(next_resp.0).as_micros() as f32/1000.0); + eprintln!("Task {} response at {:.1}ms not found in ready list", next_resp.1, crate::time::clock::tick_to_time(next_resp.0).as_micros() as f32/1000.0); } } } else {