fix releases
This commit is contained in:
parent
6995cd053b
commit
bd7ddaffbd
@ -179,6 +179,7 @@ where
|
||||
fn pre_exec(&mut self, _emulator: libafl_qemu::Qemu, _input: &S::Input) {
|
||||
unsafe {
|
||||
CURRENT_SYSTEMSTATE_VEC.clear();
|
||||
JOBS_DONE.clear();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -262,7 +262,7 @@ fn get_release_response_pairs(rel: &Vec<(u64, String)>, resp: &Vec<(u64, String)
|
||||
r.next();
|
||||
} else {
|
||||
if let Some(peek_resp) = d.peek() {
|
||||
if peek_resp.0 >= peek_rel.0 { // multiple releases before respopnse, only use the latest release
|
||||
if peek_resp.0 > peek_rel.0 { // multiple releases before response, only use the latest release
|
||||
eprintln!("Task {} released multiple times before response", peek_rel.1);
|
||||
ready.insert(&peek_rel.1, peek_rel.0);
|
||||
r.next();
|
||||
@ -271,14 +271,17 @@ fn get_release_response_pairs(rel: &Vec<(u64, String)>, resp: &Vec<(u64, String)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if let Some(peek_resp) = d.next() {
|
||||
if ready.contains_key(&peek_resp.1) {
|
||||
assert!(peek_resp.0 >= ready[&peek_resp.1]);
|
||||
ret.push((ready[&peek_resp.1], peek_resp.0, peek_resp.1.clone()));
|
||||
ready.remove(&peek_resp.1);
|
||||
}
|
||||
else {
|
||||
eprintln!("Task {} not found in ready list", peek_resp.1);
|
||||
if let Some(next_resp) = d.next() {
|
||||
if ready.contains_key(&next_resp.1) {
|
||||
if ready[&next_resp.1] >= next_resp.0 {
|
||||
eprintln!("Task {} released after response", next_resp.1);
|
||||
} else {
|
||||
// assert!(peek_resp.0 >= ready[&peek_resp.1]);
|
||||
ret.push((ready[&next_resp.1], next_resp.0, next_resp.1.clone()));
|
||||
ready.remove(&next_resp.1);
|
||||
}
|
||||
} else {
|
||||
eprintln!("Task {} not found in ready list", next_resp.1);
|
||||
}
|
||||
} else {
|
||||
// TODO: should remaining released tasks be counted as finished?
|
||||
|
Loading…
x
Reference in New Issue
Block a user