Fix negative stability (#2731)

* fix

* FMT
This commit is contained in:
Dongjia "toka" Zhang 2024-11-26 17:10:31 +01:00 committed by GitHub
parent 41c1c545b2
commit 49d1b18010
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 5 deletions

View File

@ -9,7 +9,7 @@ use libafl::monitors::SimpleMonitor;
use libafl::{
corpus::{InMemoryCorpus, OnDiskCorpus},
events::SimpleEventManager,
executors::{InProcessExecutor, ExitKind},
executors::{ExitKind, InProcessExecutor},
feedbacks::{CrashFeedback, MaxMapFeedback},
fuzzer::{Fuzzer, StdFuzzer},
generators::RandPrintablesGenerator,

View File

@ -329,15 +329,19 @@ where
map_first_filled_count, 0,
"The map's filled count must never be 0"
);
// In theory `map_first_filled_count - unstable_entries` could be negative.
// Because `map_first_filled_count` is the filled count of just one single run.
// While the `unstable_entries` is the number of all the unstable entries across multiple runs.
// If the target is very unstable (~100%) then this would hit more edges than `map_first_filled_count`.
// But even in that case, we don't allow negative stability and just show 0% here.
let stable_count: u64 =
map_first_filled_count.saturating_sub(unstable_entries) as u64;
mgr.fire(
state,
Event::UpdateUserStats {
name: Cow::from("stability"),
value: UserStats::new(
UserStatsValue::Ratio(
(map_first_filled_count - unstable_entries) as u64,
map_first_filled_count as u64,
),
UserStatsValue::Ratio(stable_count, map_first_filled_count as u64),
AggregatorOps::Avg,
),
phantom: PhantomData,