diff --git a/fuzzers/FRET/src/clock.rs b/fuzzers/FRET/src/clock.rs index adc3e597c3..a63b9a36b5 100644 --- a/fuzzers/FRET/src/clock.rs +++ b/fuzzers/FRET/src/clock.rs @@ -84,7 +84,7 @@ impl Default for MaxIcountMetadata { /// A piece of metadata tracking all icounts #[derive(Debug, SerdeAny, Serialize, Deserialize)] -pub struct IcHist(pub Vec); +pub struct IcHist (pub Vec, pub u64); //========== Observer @@ -139,10 +139,11 @@ where let hist = metadata.get_mut::(); match hist { None => { - metadata.insert(IcHist(vec![self.end_tick - self.start_tick])); + metadata.insert(IcHist(vec![self.end_tick - self.start_tick], self.end_tick-self.start_tick)); } Some(v) => { v.0.push(self.end_tick - self.start_tick); + v.1 = max(v.1, self.end_tick - self.start_tick); if v.0.len() >= 100 { if let Ok(td) = env::var("TIME_DUMP") { let mut file = OpenOptions::new() diff --git a/fuzzers/FRET/src/mutational.rs b/fuzzers/FRET/src/mutational.rs index dda8d4a36f..eabe1540f2 100644 --- a/fuzzers/FRET/src/mutational.rs +++ b/fuzzers/FRET/src/mutational.rs @@ -351,7 +351,10 @@ where } #[cfg(not(feature = "feed_systemtrace"))] { - let maxtick : u64 = (_input.exec_time().expect("No duration found").as_nanos() >> 4).try_into().unwrap(); + let metadata = state.metadata(); + let hist = metadata.get::().unwrap(); + let maxtick : u64 = hist.1; + // let maxtick : u64 = (_input.exec_time().expect("No duration found").as_nanos() >> 4).try_into().unwrap(); let mut numbers : Vec = vec![]; for i in 0..num_interrupts { prefix.push(u32::to_le_bytes(myrand.between(0, maxtick).try_into().unwrap()));