From 4bcafe89c48f6618ced290e14b3186d9b1e8006e Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Sat, 30 Nov 2024 12:00:45 -0700 Subject: [PATCH] object: fix race detected by tsan in mpsc queue Signed-off-by: Stephen Gutekanst --- src/mpsc.zig | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/mpsc.zig b/src/mpsc.zig index a1bd2634..c6eb7c57 100644 --- a/src/mpsc.zig +++ b/src/mpsc.zig @@ -350,6 +350,15 @@ pub fn Queue(comptime Value: type) type { // Lost race (with another takeAll() or pop()), retry from start continue :outer; } + + // Ensure all previous atomic operations (including linking) are complete + // Specifically this part of pushRaw(): + // + // // Link previous node to new node + // @atomicStore(?*Node, &prev.next, node, .release); + // + _ = @atomicLoad(*Node, &q.head, .acquire); + return tail; } }