https://bugs.winehq.org/show_bug.cgi?id=51295
Bug ID: 51295 Summary: ntoskrnl.exe:ntoskrnl occasionally hangs in test_overlapped() Product: Wine Version: 6.10 Hardware: x86-64 OS: Linux Status: NEW Keywords: regression, source, testcase Severity: normal Priority: P2 Component: wineserver Assignee: wine-bugs@winehq.org Reporter: z.figura12@gmail.com Regression SHA1: 97afac469fbe012e22acc1f1045c88b1004a241f Distribution: ---
Created attachment 70168 --> https://bugs.winehq.org/attachment.cgi?id=70168 make the problem more reproducible
Specifically, it hangs if ntoskrnl is able to signal that the IRP is pending (by calling get_next_device_request) before the user space process calls wait_async().
97afac469 intends for wait_async() to return STATUS_PENDING, because that is the synchronous return of the ioctl. The problem is that we're trying to have the select request *succeed immediately*, but STATUS_PENDING means that it didn't succeed immediately and that the client needs to wait for a wakeup.
This can be triggered pretty reliably by running the relevant tests in a loop, as in the attached patch.
I think https://testbot.winehq.org/JobDetails.pl?Key=92616&f401=win32.report#k401 is an example of this happening on the testbot.