tweak time outputs
This commit is contained in:
parent
52cc00fedc
commit
253048e534
@ -14,7 +14,7 @@ use libafl::{
|
|||||||
observers::ObserversTuple, prelude::UsesInput, impl_serdeany,
|
observers::ObserversTuple, prelude::UsesInput, impl_serdeany,
|
||||||
};
|
};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::{cell::UnsafeCell, cmp::max, env, fs::OpenOptions, io::Write};
|
use std::{cell::UnsafeCell, cmp::max, env, fs::OpenOptions, io::Write, time::Instant};
|
||||||
use libafl::bolts::tuples::Named;
|
use libafl::bolts::tuples::Named;
|
||||||
|
|
||||||
use libafl_qemu::{
|
use libafl_qemu::{
|
||||||
@ -36,6 +36,8 @@ use core::{fmt::Debug, time::Duration};
|
|||||||
use libafl::bolts::tuples::MatchName;
|
use libafl::bolts::tuples::MatchName;
|
||||||
use std::time::{SystemTime, UNIX_EPOCH};
|
use std::time::{SystemTime, UNIX_EPOCH};
|
||||||
|
|
||||||
|
pub static mut FUZZ_START_TIMESTAMP : SystemTime = UNIX_EPOCH;
|
||||||
|
|
||||||
//========== Metadata
|
//========== Metadata
|
||||||
#[derive(Debug, SerdeAny, Serialize, Deserialize)]
|
#[derive(Debug, SerdeAny, Serialize, Deserialize)]
|
||||||
pub struct QemuIcountMetadata {
|
pub struct QemuIcountMetadata {
|
||||||
@ -138,15 +140,16 @@ where
|
|||||||
// println!("Number of Ticks: {} <- {} {}",self.end_tick - self.start_tick, self.end_tick, self.start_tick);
|
// println!("Number of Ticks: {} <- {} {}",self.end_tick - self.start_tick, self.end_tick, self.start_tick);
|
||||||
let metadata =_state.metadata_mut();
|
let metadata =_state.metadata_mut();
|
||||||
let hist = metadata.get_mut::<IcHist>();
|
let hist = metadata.get_mut::<IcHist>();
|
||||||
|
let timestamp = SystemTime::now().duration_since(unsafe {FUZZ_START_TIMESTAMP}).unwrap().as_millis();
|
||||||
match hist {
|
match hist {
|
||||||
None => {
|
None => {
|
||||||
metadata.insert(IcHist(vec![(self.end_tick - self.start_tick, SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_millis())],
|
metadata.insert(IcHist(vec![(self.end_tick - self.start_tick, timestamp)],
|
||||||
(self.end_tick - self.start_tick, SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_millis())));
|
(self.end_tick - self.start_tick, timestamp)));
|
||||||
}
|
}
|
||||||
Some(v) => {
|
Some(v) => {
|
||||||
v.0.push((self.end_tick - self.start_tick, SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_millis()));
|
v.0.push((self.end_tick - self.start_tick, timestamp));
|
||||||
if (v.1.0 < self.end_tick-self.start_tick) {
|
if (v.1.0 < self.end_tick-self.start_tick) {
|
||||||
v.1 = (self.end_tick - self.start_tick, SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_millis());
|
v.1 = (self.end_tick - self.start_tick, timestamp);
|
||||||
}
|
}
|
||||||
if v.0.len() >= 100 {
|
if v.0.len() >= 100 {
|
||||||
if let Ok(td) = env::var("TIME_DUMP") {
|
if let Ok(td) = env::var("TIME_DUMP") {
|
||||||
|
@ -35,7 +35,7 @@ use libafl_qemu::{
|
|||||||
};
|
};
|
||||||
use rand::{SeedableRng, StdRng, Rng};
|
use rand::{SeedableRng, StdRng, Rng};
|
||||||
use crate::{
|
use crate::{
|
||||||
clock::{QemuClockObserver, ClockTimeFeedback, QemuClockIncreaseFeedback, IcHist},
|
clock::{QemuClockObserver, ClockTimeFeedback, QemuClockIncreaseFeedback, IcHist, FUZZ_START_TIMESTAMP},
|
||||||
qemustate::QemuStateRestoreHelper,
|
qemustate::QemuStateRestoreHelper,
|
||||||
systemstate::{mutators::{MINIMUM_INTER_ARRIVAL_TIME}, helpers::QemuSystemStateHelper, observers::QemuSystemStateObserver, feedbacks::{DumpSystraceFeedback, NovelSystemStateFeedback}, graph::{SysMapFeedback, SysGraphFeedbackState, GraphMaximizerCorpusScheduler}, schedulers::{LongestTraceScheduler, GenerationScheduler}}, worst::{TimeMaximizerCorpusScheduler, ExecTimeIncFeedback, TimeStateMaximizerCorpusScheduler, AlwaysTrueFeedback},
|
systemstate::{mutators::{MINIMUM_INTER_ARRIVAL_TIME}, helpers::QemuSystemStateHelper, observers::QemuSystemStateObserver, feedbacks::{DumpSystraceFeedback, NovelSystemStateFeedback}, graph::{SysMapFeedback, SysGraphFeedbackState, GraphMaximizerCorpusScheduler}, schedulers::{LongestTraceScheduler, GenerationScheduler}}, worst::{TimeMaximizerCorpusScheduler, ExecTimeIncFeedback, TimeStateMaximizerCorpusScheduler, AlwaysTrueFeedback},
|
||||||
mutational::MyStateStage,
|
mutational::MyStateStage,
|
||||||
@ -68,7 +68,8 @@ extern "C" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn fuzz() {
|
pub fn fuzz() {
|
||||||
let starttime = std::time::Instant::now();
|
unsafe {FUZZ_START_TIMESTAMP = SystemTime::now();}
|
||||||
|
let mut starttime = std::time::Instant::now();
|
||||||
if let Ok(s) = env::var("FUZZ_SIZE") {
|
if let Ok(s) = env::var("FUZZ_SIZE") {
|
||||||
str::parse::<usize>(&s).expect("FUZZ_SIZE was not a number");
|
str::parse::<usize>(&s).expect("FUZZ_SIZE was not a number");
|
||||||
};
|
};
|
||||||
@ -515,9 +516,10 @@ pub fn fuzz() {
|
|||||||
}
|
}
|
||||||
println!("Start running until saturation");
|
println!("Start running until saturation");
|
||||||
let mut last = state.metadata().get::<IcHist>().unwrap().1;
|
let mut last = state.metadata().get::<IcHist>().unwrap().1;
|
||||||
while SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_millis() < last.1 + Duration::from_secs(10800).as_millis() {
|
while SystemTime::now().duration_since(unsafe {FUZZ_START_TIMESTAMP}).unwrap().as_millis() < last.1 + Duration::from_secs(10800).as_millis() {
|
||||||
|
starttime=starttime.checked_add(Duration::from_secs(30)).unwrap();
|
||||||
fuzzer
|
fuzzer
|
||||||
.fuzz_loop_until(&mut stages, &mut executor, &mut state, &mut mgr, starttime.checked_add(Duration::from_secs(5)).unwrap())
|
.fuzz_loop_until(&mut stages, &mut executor, &mut state, &mut mgr, starttime)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let after = state.metadata().get::<IcHist>().unwrap().1;
|
let after = state.metadata().get::<IcHist>().unwrap().1;
|
||||||
if after.0 > last.0 {
|
if after.0 > last.0 {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user