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