On Thu Mar 13 14:44:59 2025 +0000, Jinoh Kang wrote:
The offset is ephemeral by nature: the struct referenced by the offset can always be freed and reused by another object at any time, even during a read from a client. We still need a way to verify that the "read critical section" is consistently reading from the same USER object throughout the duration of the critical section, instead of some dangling/freed offset due to an abrupt replacement/destruction of the object. One obvious way to resolve is to make the USER handle (itself consisting of index + generation) a part of the struct referenced by that offset. This is what I assume Rémi is referring to as the "ID". We may just validate the handle again after reading.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/7512#note_97701