https://bugs.winehq.org/show_bug.cgi?id=46047
--- Comment #4 from Greg Smith codedonewell@gmail.com --- There is definitely a synchronisation issue with these functions. It is possible for another thread to change the address contents and signal inside the time that WaitOnAddress checks the address contents and when it waits for an event. It is a very small window for the problem to occur, but the Star Citizen start up seems to trigger it every time so far. However, I doubt that there have been more than a 20 or 30 attempts, so the sample size is small and it may not always encounter this condition. As far as a solution goes, I haven't yet thought of a way to do it using the NtWaitForKeyedEvent/NtReleaseKeyedEvent functions. I do not have your experience with windows programming nor wine, so there may well be a way. With a common/dedicated mutex and condition pair for the WaitOnAddress WakeByAddress* functions it would be possible.