Zebediah Figura (@zfigura) commented about dlls/ntdll/sync.c:
record.ExceptionFlags = 0;
record.ExceptionRecord = NULL;
record.NumberParameters = 0;
return RtlRaiseException(&record); }
else
if (tag & SRWLOCK_TAG_HAS_WAITERS) {
ret = FALSE;
/* We are only safe to access the list head if there are multiple owners,
* in which case only after the last owner has decremented `num_owners`
* can the list starts to be modified. OTOH when the HAS_MULTIPLE_OWNERS
* bit is not set, we know we are the sole owner without needing to
* consult the list. */
if (tag & SRWLOCK_TAG_HAS_MULTIPLE_OWNERS)
Wait, why can't we access the list head if we're the last owner? Nobody can wake the lock other than us, right?