diff --git a/fuzzers/FRET/src/systemstate/observers.rs b/fuzzers/FRET/src/systemstate/observers.rs index 15e8bbc722..f10c7f5736 100644 --- a/fuzzers/FRET/src/systemstate/observers.rs +++ b/fuzzers/FRET/src/systemstate/observers.rs @@ -306,6 +306,7 @@ fn get_release_response_pairs(rel: &Vec<(u64, String)>, resp: &Vec<(u64, String) let mut d = resp.iter().peekable(); loop { while let Some(peek_rel) = r.peek() { + // Fill releases as soon as possible if !ready.contains_key(&peek_rel.1) { ready.insert(&peek_rel.1, peek_rel.0); r.next(); @@ -316,9 +317,14 @@ fn get_release_response_pairs(rel: &Vec<(u64, String)>, resp: &Vec<(u64, String) eprintln!("Task {} released multiple times before response ({}ms and {}ms)", peek_rel.1, crate::time::clock::tick_to_time(ready[&peek_rel.1]).as_millis(), crate::time::clock::tick_to_time(peek_rel.0).as_millis()); // ready.insert(&peek_rel.1, peek_rel.0); r.next(); + } else { + // releases have overtaken responses, wait until the ready list clears up a bit + break; } + } else { + // no more responses + break; } - break; } } if let Some(next_resp) = d.next() {