determinism fixes, scheduler precision, restarts

This commit is contained in:
Alwin Berger 2023-03-13 14:43:58 +01:00
parent d118eeacbd
commit f09034b7fe
3 changed files with 9 additions and 10 deletions

View File

@ -5,7 +5,7 @@ authors = ["Andrea Fioraldi <andreafioraldi@gmail.com>", "Dominik Maier <domenuk
edition = "2021" edition = "2021"
[features] [features]
default = ["std", "snapshot_restore", "singlecore", "feed_longest", "feed_afl"] default = ["std", "snapshot_restore", "singlecore", "feed_longest", "feed_afl", "restarting"]
std = [] std = []
snapshot_restore = [] snapshot_restore = []
snapshot_fast = [ "snapshot_restore" ] snapshot_fast = [ "snapshot_restore" ]

View File

@ -370,13 +370,11 @@ pub fn fuzz() {
} else { } else {
if let Ok(_) = env::var("SEED_RANDOM") { if let Ok(_) = env::var("SEED_RANDOM") {
unsafe { unsafe {
let mut generator = RandBytesGenerator::new(MAX_INPUT_SIZE); let mut rng = StdRng::seed_from_u64(RNG_SEED);
state for i in 0..100 {
.generate_initial_inputs(&mut fuzzer, &mut executor, &mut generator, &mut mgr, 100) let inp = BytesInput::new(vec![rng.gen::<u8>(); MAX_INPUT_SIZE]);
.unwrap_or_else(|_| { fuzzer.evaluate_input(&mut state, &mut executor, &mut mgr, inp).unwrap();
println!("Failed to load initial corpus at {:?}", &corpus_dirs); }
process::exit(0);
});
} }
} }
else if let Ok(sf) = env::var("SEED_DIR") { else if let Ok(sf) = env::var("SEED_DIR") {

View File

@ -56,8 +56,9 @@ where
{ {
fn compute(entry: &mut Testcase<S::Input>, state: &S) -> Result<f64, Error> { fn compute(entry: &mut Testcase<S::Input>, state: &S) -> Result<f64, Error> {
// TODO maybe enforce entry.exec_time().is_some() // TODO maybe enforce entry.exec_time().is_some()
let execs_per_hour = 3600.0/entry.exec_time().expect("testcase.exec_time is needed for scheduler").as_secs_f64(); let et = entry.exec_time().expect("testcase.exec_time is needed for scheduler");
Ok(execs_per_hour) let tns : i64 = et.as_nanos().try_into().expect("failed to convert time");
Ok(-tns as f64)
} }
} }