add last 60s exec/s stat
MODIFY
include/afl-fuzz.h
include/afl-fuzz.h
@@ -581,6 +581,10 @@ typedef struct afl_state {
u8 describe_op_buf_256[256]; /* describe_op will use this to return a string
up to 256 */
+ unsigned long long int last_avg_exec_update;
+ u32 last_avg_execs;
+ float last_avg_execs_saved;
+
/* foreign sync */
#define FOREIGN_SYNCS_MAX 32
u8 foreign_sync_cnt;

MODIFY
src/afl-fuzz-mutators.c
src/afl-fuzz-mutators.c
@@ -168,7 +168,8 @@ struct custom_mutator *load_custom_mutator(afl_state_t *afl, const char *fn) {
/* "afl_custom_deinit", optional for backward compatibility */
mutator->afl_custom_deinit = dlsym(dh, "afl_custom_deinit");
- if (!mutator->afl_custom_deinit) FATAL("Symbol 'afl_custom_deinit' not found.");
+ if (!mutator->afl_custom_deinit)
+ FATAL("Symbol 'afl_custom_deinit' not found.");
/* "afl_custom_post_process", optional */
mutator->afl_custom_post_process = dlsym(dh, "afl_custom_post_process");

MODIFY
src/afl-fuzz-stats.c
src/afl-fuzz-stats.c
@@ -39,7 +39,7 @@ void write_stats_file(afl_state_t *afl, double bitmap_cvg, double stability,
u8 fn[PATH_MAX];
s32 fd;
FILE * f;
- uint32_t t_bytes = count_non_255_bytes(afl, afl->virgin_bits);
+ u32 t_bytes = count_non_255_bytes(afl, afl->virgin_bits);
snprintf(fn, PATH_MAX, "%s/fuzzer_stats", afl->out_dir);
@@ -67,12 +67,22 @@ void write_stats_file(afl_state_t *afl, double bitmap_cvg, double stability,
}
+ if ((unlikely(!afl->last_avg_exec_update ||
+ cur_time - afl->last_avg_exec_update >= 60000))) {
+
+ afl->last_avg_execs_saved =
+ (float)(1000*(afl->fsrv.total_execs - afl->last_avg_execs)) /
+ (float)(cur_time - afl->last_avg_exec_update);
+ afl->last_avg_execs = afl->fsrv.total_execs;
+ afl->last_avg_exec_update = cur_time;
+
+ }
+
#ifndef __HAIKU__
if (getrusage(RUSAGE_CHILDREN, &rus)) { rus.ru_maxrss = 0; }
#endif
- fprintf(
- f,
+ fprintf(f,
"start_time : %llu\n"
"last_update : %llu\n"
"run_time : %llu\n"
@@ -81,7 +91,7 @@ void write_stats_file(afl_state_t *afl, double bitmap_cvg, double stability,
"cycles_wo_finds : %llu\n"
"execs_done : %llu\n"
"execs_per_sec : %0.02f\n"
- // "real_execs_per_sec: %0.02f\n" // damn the name is too long
+ "execs_ps_last_min : %0.02f\n"
"paths_total : %u\n"
"paths_favored : %u\n"
"paths_found : %u\n"
@@ -116,13 +126,14 @@ void write_stats_file(afl_state_t *afl, double bitmap_cvg, double stability,
afl->fsrv.total_execs,
afl->fsrv.total_execs /
((double)(get_cur_time() - afl->start_time) / 1000),
- afl->queued_paths, afl->queued_favored, afl->queued_discovered,
- afl->queued_imported, afl->max_depth, afl->current_entry,
- afl->pending_favored, afl->pending_not_fuzzed, afl->queued_variable,
- stability, bitmap_cvg, afl->unique_crashes, afl->unique_hangs,
- afl->last_path_time / 1000, afl->last_crash_time / 1000,
- afl->last_hang_time / 1000, afl->fsrv.total_execs - afl->last_crash_execs,
- afl->fsrv.exec_tmout, afl->slowest_exec_ms,
+ afl->last_avg_execs_saved, afl->queued_paths, afl->queued_favored,
+ afl->queued_discovered, afl->queued_imported, afl->max_depth,
+ afl->current_entry, afl->pending_favored, afl->pending_not_fuzzed,
+ afl->queued_variable, stability, bitmap_cvg, afl->unique_crashes,
+ afl->unique_hangs, afl->last_path_time / 1000,
+ afl->last_crash_time / 1000, afl->last_hang_time / 1000,
+ afl->fsrv.total_execs - afl->last_crash_execs, afl->fsrv.exec_tmout,
+ afl->slowest_exec_ms,
#ifndef __HAIKU__
#ifdef __APPLE__
(unsigned long int)(rus.ru_maxrss >> 20),
@@ -138,15 +149,16 @@ void write_stats_file(afl_state_t *afl, double bitmap_cvg, double stability,
-1,
#endif
t_bytes, afl->var_byte_count, afl->use_banner,
- afl->unicorn_mode ? "unicorn" : "", afl->fsrv.qemu_mode ? "qemu " : "",
+ afl->unicorn_mode ? "unicorn" : "",
+ afl->fsrv.qemu_mode ? "qemu " : "",
afl->non_instrumented_mode ? " non_instrumented " : "",
afl->no_forkserver ? "no_fsrv " : "", afl->crash_mode ? "crash " : "",
afl->persistent_mode ? "persistent " : "",
afl->shmem_testcase_mode ? "shmem_testcase " : "",
afl->deferred_mode ? "deferred " : "",
- (afl->unicorn_mode || afl->fsrv.qemu_mode || afl->non_instrumented_mode ||
- afl->no_forkserver || afl->crash_mode || afl->persistent_mode ||
- afl->deferred_mode)
+ (afl->unicorn_mode || afl->fsrv.qemu_mode ||
+ afl->non_instrumented_mode || afl->no_forkserver ||
+ afl->crash_mode || afl->persistent_mode || afl->deferred_mode)
? ""
: "default",
afl->orig_cmdline);

add last 60s exec/s stat