From 2e45754e271463f446c31a6f467231d8657910e8 Mon Sep 17 00:00:00 2001 From: Sergej Schumilo Date: Fri, 21 Jan 2022 20:26:47 +0100 Subject: [PATCH] handle race condition (in remove_unused_shm_work_dirs) --- fuzz_runner/src/nyx/qemu_process.rs | 37 ++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/fuzz_runner/src/nyx/qemu_process.rs b/fuzz_runner/src/nyx/qemu_process.rs index ff4e432..f775995 100644 --- a/fuzz_runner/src/nyx/qemu_process.rs +++ b/fuzz_runner/src/nyx/qemu_process.rs @@ -491,19 +491,34 @@ impl QemuProcess { path.push("lock"); if path.exists(){ - let file_lock = OpenOptions::new() + let file_lock = match OpenOptions::new() .read(true) - .open(&path) - .expect("couldn't open shm work dir lock file"); + .open(&path){ + Err(x) => { + println!("Warning: {}", x); + Err(x) + }, + x => { + x + }, + }; - path.pop(); - match file_lock.try_lock_exclusive(){ - Ok(_) => { - if path.starts_with("/dev/shm/") { - fs::remove_dir_all(path).unwrap(); - } - }, - Err(_) => {}, + if file_lock.is_ok(){ + path.pop(); + + match file_lock.unwrap().try_lock_exclusive(){ + Ok(_) => { + if path.starts_with("/dev/shm/") { + match fs::remove_dir_all(path){ + Err(x) => { + println!("Warning: {}", x); + }, + _ => {}, + } + } + }, + Err(_) => {}, + } } } }