From 952dfbef36a047ba515af35146b0c86415cd7f10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A0=20Arrufat?= Date: Sun, 1 Mar 2026 21:39:38 +0900 Subject: [PATCH] mcp: use acquire/release ordering for server running flag --- src/mcp/Server.zig | 2 +- src/mcp/router.zig | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mcp/Server.zig b/src/mcp/Server.zig index 91823ef1..02e99abc 100644 --- a/src/mcp/Server.zig +++ b/src/mcp/Server.zig @@ -156,7 +156,7 @@ fn initResources(allocator: std.mem.Allocator) ![]const protocol.Resource { } pub fn deinit(self: *Self) void { - self.is_running.store(false, .seq_cst); + self.is_running.store(false, .release); self.browser.deinit(); self.allocator.destroy(self.browser); diff --git a/src/mcp/router.zig b/src/mcp/router.zig index a39dc7bd..2e021114 100644 --- a/src/mcp/router.zig +++ b/src/mcp/router.zig @@ -13,12 +13,12 @@ pub fn processRequests(server: *Server) !void { var stdin_buf: [8192]u8 = undefined; var stdin = stdin_file.reader(&stdin_buf); - server.is_running.store(true, .seq_cst); + server.is_running.store(true, .release); var arena: std.heap.ArenaAllocator = .init(server.allocator); defer arena.deinit(); - while (server.is_running.load(.seq_cst)) { + while (server.is_running.load(.acquire)) { const msg = stdin.interface.adaptToOldInterface().readUntilDelimiterAlloc(server.allocator, '\n', 1024 * 1024 * 10) catch |err| { if (err == error.EndOfStream) break; return err;