MCPcopy Create free account
hub / github.com/FuzzAnything/PromptFuzz / sync_from_previous_state

Method sync_from_previous_state

src/fuzzer.rs:61–91  ·  view source on GitHub ↗

When the execution stopped or crashed by internal's bugs, sync from the previous state.

(&mut self, logger: &mut ProgramLogger)

Source from the content-addressed store, hash-verified

59
60 // When the execution stopped or crashed by internal's bugs, sync from the previous state.
61 pub fn sync_from_previous_state(&mut self, logger: &mut ProgramLogger) -> Result<()> {
62 let mut is_the_last = false;
63 for file in crate::deopt::utils::read_sort_dir(&self.deopt.get_library_output_dir()?)?
64 .iter()
65 .rev()
66 {
67 if file.is_dir() {
68 continue;
69 }
70 if let Some(ext) = file.extension() {
71 if ext == "log" {
72 if !is_the_last {
73 is_the_last = true;
74 continue;
75 }
76 log::info!("Find a previous exection: {file:?}");
77 log::info!("Restore the states from the previous execution!");
78 let log_str = std::fs::read_to_string(file)?;
79 let sync_logger = ProgramLogger::snyc_from_str(&log_str)?;
80 self.deopt.seed_id = sync_logger.get_gc_total();
81 _ = std::mem::replace(logger, sync_logger);
82 let observer = Observer::sync_from_previous(&mut self.deopt)?;
83 _ = std::mem::replace(&mut self.observer, observer);
84 Schedule::snyc_from_str(&self.deopt);
85 self.sync_quiet_round(&log_str)?;
86 return Ok(());
87 }
88 }
89 }
90 Ok(())
91 }
92
93 pub fn transform_seeds_to_fuzzers(&self) -> Result<()> {
94 let programs = crate::deopt::utils::read_sort_dir(&self.deopt.get_library_seed_dir()?)?;

Callers 1

fuzz_loopMethod · 0.80

Calls 4

read_sort_dirFunction · 0.85
get_gc_totalMethod · 0.80
sync_quiet_roundMethod · 0.80

Tested by

no test coverage detected