From 042df590a2e6ab746331ede71647f7274e47d48a Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Wed, 6 May 2026 18:42:06 +0800 Subject: [PATCH] Abort http_client _before_ destroying context XHR, for example, needs the context to properly shutdown. It get the page via exec.context.page. Now, we could store the page on the XHR instance, sure. But the point is the js.Context should never need the HttpClient, so it should always be safe to abort inflight requests before canceling the context. Fixes some flaky WPT crashes. --- src/browser/Frame.zig | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/browser/Frame.zig b/src/browser/Frame.zig index 51c6254b..7ea7474c 100644 --- a/src/browser/Frame.zig +++ b/src/browser/Frame.zig @@ -405,6 +405,10 @@ pub fn deinit(self: *Frame) void { } const browser = page.session.browser; + + // don't abort pending frames. + browser.http_client.abortFrame(self._frame_id, .{}); + browser.env.destroyContext(self.js); // Must be after context is destroyed. A finalizer can reach into the *Worker @@ -415,9 +419,6 @@ pub fn deinit(self: *Frame) void { self._script_manager.base.shutdown = true; - // don't abort pending frames. - browser.http_client.abortFrame(self._frame_id, .{}); - self._script_manager.deinit(); self._style_manager.deinit();