Jinoh Kang (@iamahuman) commented about server/async.c:
return woken;
}
+static int cancel_blocking( struct process *process, struct thread *thread, client_ptr_t iosb ) +{
- struct async *async;
- int woken = 0;
+restart:
- LIST_FOR_EACH_ENTRY( async, &process->asyncs, struct async, process_entry )
- {
if (async->terminated || async->canceled) continue;
There is a pre-existing bug where cancellation requests are ignored for alerted asyncs (i.e. async instances that are not actually completed and can go back from the "terminated" state to the pending state). Perhaps it's worth addressing that bug first? https://www.winehq.org/pipermail/wine-devel/2022-March/210053.html