diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2021-12-13 11:23:54 +0000 |
|---|---|---|
| committer | Aleksandr Nogikh <wp32pw@gmail.com> | 2021-12-13 12:51:54 +0100 |
| commit | 19ccaabc471a7b82a04f9156a27335774e320779 (patch) | |
| tree | 34685f10f3452f44b29331eb1bfc33f0ea8b8720 /executor | |
| parent | 0304899bb860b5ee330cec0a52922a52090eb5d9 (diff) | |
executor: ignore async flag in the non-threaded mode
pkg/repro tries to clear the Threaded flag during repro simplification,
so it's easier just to ignore the remaining async flags in that case -
they won't be in the C repro either.
Add a test to pkg/ipc to verify the new behavior.
Diffstat (limited to 'executor')
| -rw-r--r-- | executor/executor.cc | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/executor/executor.cc b/executor/executor.cc index c0e2e6625..73f6053ee 100644 --- a/executor/executor.cc +++ b/executor/executor.cc @@ -871,10 +871,10 @@ void execute_one() thread_t* th = schedule_call(call_index++, call_num, copyout_index, num_args, args, input_pos, call_props); - if (call_props.async) { - if (!flag_threaded) - fail("SYZFAIL: unable to do an async call in a non-threaded mode"); + if (call_props.async && flag_threaded) { // Don't wait for an async call to finish. We'll wait at the end. + // If we're not in the threaded mode, just ignore the async flag - during repro simplification syzkaller + // will anyway try to make it non-threaded. } else if (flag_threaded) { // Wait for call completion. uint64 timeout_ms = syscall_timeout_ms + call->attrs.timeout * slowdown_scale; |
