add timeouts for executors

This commit is contained in:
toka 2021-03-13 07:25:28 +09:00
parent d1524d9657
commit cad5e339d9

View File

@ -71,7 +71,15 @@ where
#[inline]
fn run_target(&mut self, input: &I) -> Result<ExitKind, Error> {
let bytes = input.target_bytes();
#[cfg(unix)]
unsafe { libc::alarm(1) };
let ret = (self.harness_fn)(self, bytes.as_slice());
#[cfg(unix)]
unsafe { libc::alarm(0) };
#[cfg(unix)]
unsafe {
write_volatile(
@ -228,14 +236,19 @@ mod unix_signal_handler {
unsafe {
let data = &mut GLOBAL_STATE;
match signal {
Signal::SigUser2 => (data.timeout_handler)(signal, info, void, data),
_ => (data.crash_handler)(signal, info, void, data),
Signal::SigUser2 | Signal::SigAlarm => {
(data.timeout_handler)(signal, info, void, data)
},
_ => {
(data.crash_handler)(signal, info, void, data)
},
}
}
}
fn signals(&self) -> Vec<Signal> {
vec![
Signal::SigAlarm,
Signal::SigUser2,
Signal::SigAbort,
Signal::SigBus,