launcher: add launch_delay option (#2227)
* launcher: add launch_delay option * Centralized too * Use in test * Undo * Windows too * Format * Fix cfg guard
This commit is contained in:
parent
f324c60b02
commit
864c2259e7
@ -461,6 +461,7 @@ unsafe fn fuzz(options: &FuzzerOptions) -> Result<(), Error> {
|
|||||||
.configuration(EventConfig::AlwaysUnique)
|
.configuration(EventConfig::AlwaysUnique)
|
||||||
.shmem_provider(shmem_provider)
|
.shmem_provider(shmem_provider)
|
||||||
.monitor(monitor)
|
.monitor(monitor)
|
||||||
|
.launch_delay(100)
|
||||||
.run_client(&mut run_client)
|
.run_client(&mut run_client)
|
||||||
.cores(&options.cores)
|
.cores(&options.cores)
|
||||||
.broker_port(options.broker_port)
|
.broker_port(options.broker_port)
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
use alloc::string::ToString;
|
use alloc::string::ToString;
|
||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
use core::marker::PhantomData;
|
use core::marker::PhantomData;
|
||||||
#[cfg(all(unix, feature = "std", feature = "fork"))]
|
#[cfg(feature = "std")]
|
||||||
use core::time::Duration;
|
use core::time::Duration;
|
||||||
use core::{
|
use core::{
|
||||||
fmt::{self, Debug, Formatter},
|
fmt::{self, Debug, Formatter},
|
||||||
@ -107,6 +107,9 @@ where
|
|||||||
#[cfg(all(unix, feature = "std"))]
|
#[cfg(all(unix, feature = "std"))]
|
||||||
#[builder(default = None)]
|
#[builder(default = None)]
|
||||||
stdout_file: Option<&'a str>,
|
stdout_file: Option<&'a str>,
|
||||||
|
/// The time in milliseconds to delay between child launches
|
||||||
|
#[builder(default = 10)]
|
||||||
|
launch_delay: u64,
|
||||||
/// The actual, opened, `stdout_file` - so that we keep it open until the end
|
/// The actual, opened, `stdout_file` - so that we keep it open until the end
|
||||||
#[cfg(all(unix, feature = "std", feature = "fork"))]
|
#[cfg(all(unix, feature = "std", feature = "fork"))]
|
||||||
#[builder(setter(skip), default = None)]
|
#[builder(setter(skip), default = None)]
|
||||||
@ -251,7 +254,7 @@ where
|
|||||||
self.shmem_provider.post_fork(true)?;
|
self.shmem_provider.post_fork(true)?;
|
||||||
|
|
||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
std::thread::sleep(Duration::from_millis(index * 10));
|
std::thread::sleep(Duration::from_millis(index * self.launch_delay));
|
||||||
|
|
||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
if !debug_output {
|
if !debug_output {
|
||||||
@ -399,6 +402,10 @@ where
|
|||||||
stderr = Stdio::inherit();
|
stderr = Stdio::inherit();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "std")]
|
||||||
|
std::thread::sleep(Duration::from_millis(id as u64 * self.launch_delay));
|
||||||
|
|
||||||
std::env::set_var(_AFL_LAUNCHER_CLIENT, id.to_string());
|
std::env::set_var(_AFL_LAUNCHER_CLIENT, id.to_string());
|
||||||
let mut child = startable_self()?;
|
let mut child = startable_self()?;
|
||||||
let child = (if debug_output {
|
let child = (if debug_output {
|
||||||
@ -508,6 +515,9 @@ where
|
|||||||
/// A file name to write all client output to
|
/// A file name to write all client output to
|
||||||
#[builder(default = None)]
|
#[builder(default = None)]
|
||||||
stdout_file: Option<&'a str>,
|
stdout_file: Option<&'a str>,
|
||||||
|
/// The time in milliseconds to delay between child launches
|
||||||
|
#[builder(default = 10)]
|
||||||
|
launch_delay: u64,
|
||||||
/// The actual, opened, `stdout_file` - so that we keep it open until the end
|
/// The actual, opened, `stdout_file` - so that we keep it open until the end
|
||||||
#[cfg(all(unix, feature = "std", feature = "fork"))]
|
#[cfg(all(unix, feature = "std", feature = "fork"))]
|
||||||
#[builder(setter(skip), default = None)]
|
#[builder(setter(skip), default = None)]
|
||||||
@ -659,7 +669,7 @@ where
|
|||||||
log::info!("{:?} PostFork", unsafe { libc::getpid() });
|
log::info!("{:?} PostFork", unsafe { libc::getpid() });
|
||||||
self.shmem_provider.post_fork(true)?;
|
self.shmem_provider.post_fork(true)?;
|
||||||
|
|
||||||
std::thread::sleep(Duration::from_millis(index * 10));
|
std::thread::sleep(Duration::from_millis(index * self.launch_delay));
|
||||||
|
|
||||||
if !debug_output {
|
if !debug_output {
|
||||||
if let Some(file) = &self.opened_stdout_file {
|
if let Some(file) = &self.opened_stdout_file {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user