https://bugs.winehq.org/show_bug.cgi?id=46208
--- Comment #2 from Brendan McGrath brendan@redmandi.com --- Created attachment 62891 --> https://bugs.winehq.org/attachment.cgi?id=62891 Logs of Elite Dangerous failing
The attached tar file has five files in it: - ED_wake.log - ED_failv1.log - ED_failv2.log - ED_failv3.log - ED_fail_log.patch
The ED_wake.log is using your patch, the other three log files are using the ED_fail_log.patch (which is just your patch with a few more values included).
I also have one other log which I will attach next (as it didn't fit the 5MB limit) using the taskset -c 0 command.
I found that with taskset, the loop in 'WakeAll' doesn't appear to be pre-empted; so it completes before anyone else wants to sleep on that event.
But with multiple CPUs, it seems both sleep and wake requests occur against this event whilst the 'WakeAll' is in progress. This results in the 'wake' requests being skipped.
If you run: sed '/0x510418, 0 (skipped)/!d;N;/(skipped).*(skipped)/!d;N;/(skipped).*(skipped).*(skipped)/!d'
against any of the failed logs you'll find multiple occasions where there are consecutive 'WakeAll' requests being skipped. But this doesn't happen even once in the 'taskset' log.
Once a failure occurs, you just get an infinite loop of timeouts on the wait request.