30 Jan
2025
30 Jan
'25
9:29 p.m.
I mean that the `NtWaitForMultipleObjects()` call will always return `STATUS_OBJECT_TYPE_MISMATCH` with a completion port object under ntsync because of the `no_get_inproc_sync` handler being used (the path goes like: `object->ops->get_fast_sync()` -\> `get_linux_sync_obj()` -\> (ntdll.so) `get_fast_sync_obj()` -\> `fast_wait()`)
It should never be possible for NtWaitForMultipleObjects() to be called with a completion_wait object. NtRemoveIoCompletion() uses server_wait_for_object(), and the wait handle is never exposed outside of that function. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/7226#note_93308