diff --git a/contrib/devtools/deterministic-fuzz-coverage/src/main.rs b/contrib/devtools/deterministic-fuzz-coverage/src/main.rs index 9c1738396b5..3eeb121db02 100644 --- a/contrib/devtools/deterministic-fuzz-coverage/src/main.rs +++ b/contrib/devtools/deterministic-fuzz-coverage/src/main.rs @@ -133,7 +133,7 @@ fn deterministic_coverage( let output = { let mut cmd = Command::new(fuzz_exe); if using_libfuzzer { - cmd.arg("-runs=1"); + cmd.args(["-runs=1", "-shuffle=1", "-prefer_small=0"]); } cmd } diff --git a/src/test/fuzz/fuzz.cpp b/src/test/fuzz/fuzz.cpp index 30766700b9d..2c0f53cc347 100644 --- a/src/test/fuzz/fuzz.cpp +++ b/src/test/fuzz/fuzz.cpp @@ -15,6 +15,7 @@ #include #include +#include #include #include #include @@ -26,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -241,10 +243,15 @@ int main(int argc, char** argv) for (int i = 1; i < argc; ++i) { fs::path input_path(*(argv + i)); if (fs::is_directory(input_path)) { + std::vector files; for (fs::directory_iterator it(input_path); it != fs::directory_iterator(); ++it) { if (!fs::is_regular_file(it->path())) continue; - g_input_path = it->path(); - Assert(read_file(it->path(), buffer)); + files.emplace_back(it->path()); + } + std::ranges::shuffle(files, std::mt19937{std::random_device{}()}); + for (const auto& input_path : files) { + g_input_path = input_path; + Assert(read_file(input_path, buffer)); test_one_input(buffer); ++tested; buffer.clear();