https://bugs.winehq.org/show_bug.cgi?id=52414
Bug ID: 52414 Summary: Mount and Blade II: Bannerlord sometimes fails to exit with repeated "Async read operation failed 6" message boxes Product: Wine Version: 6.3 Hardware: x86-64 OS: Linux Status: NEW Keywords: patch Severity: normal Priority: P2 Component: wineserver Assignee: wine-bugs@winehq.org Reporter: z.figura12@gmail.com Distribution: ---
The problem was diagnosed by Andrew Eikum.
The game calls NtRemoveIoCompletion() with an infinite timeout from one thread, and from another posts a message and then immediately closes the port. It expects NtRemoveIoCompletion() to return success. In Wine this may result in a race where the select request returns STATUS_SUCCESS but the subsequent remove_completion request returns STATUS_INVALID_HANDLE, triggering the "6" (i.e. ERROR_INVALID_HANDLE) message.
Paul Gofman sent a patch series [1] to essentially keep the completion handle open while NtRemoveIoCompletion is executing, but it was sent close to code freeze and fell off the list without review.
[1] https://www.winehq.org/pipermail/wine-devel/2021-December/202655.html