On Mon, 18 Jul 2022 at 05:08, Conor McCarthy cmccarthy@codeweavers.com wrote:
Otherwise the following sequence can occur:
- A command queue is added to the blocked list during a Wait() call.
- An unblocking Signal() occurs on the CPU in another thread, flushing the blocked ops, but as no op has been written, the queue is removed from the blocked list.
- The blocked op is written.
- Another op is queued and the queue is not re-added to the blocked list because this only happens for the first op.
There are two "3."'s in that sequence. In a certain sense that's fitting, but it still seems unintentional.