On 11/17/21 06:50, Zebediah Figura wrote:
while (!InterlockedExchange( futex, 0 )){if (timeout){LONGLONG timeleft = update_timeout( end );struct timespec timespec;timespec.tv_sec = timeleft / (ULONGLONG)TICKSPERSEC;timespec.tv_nsec = (timeleft % TICKSPERSEC) * 100;ret = futex_wait( futex, 0, ×pec );}elseret = futex_wait( futex, 0, NULL );if (ret == -1 && errno == ETIMEDOUT) return STATUS_TIMEOUT;}return STATUS_ALERTED;- }
+#endif
Do you think it is possible or makes sense to handle EINTR and retry wait to avoid delivering spurious wakeups to the application in this case? We have a lot of SIGUSR1 for Wine async I/O handling. Also, maybe it would be interesting to log unexpected errors? Not that anything besides EINTR should ever happen as I understand, but sometimes unexpected errors happen and may indicate a real issue and that happened once in the past with the current upstream in process sync.