From def713db15c81eb3753f7c954ddd0ade19a1ded1 Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Tue, 7 Apr 2026 21:51:38 +0800 Subject: [PATCH] Clear identity before forcing finalizers We need to remove v8 finalizer callbacks upfront so that, as we tear things down there's no chance for v8 to try to finalize something which has already been finalized or is gone. --- src/browser/Session.zig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/browser/Session.zig b/src/browser/Session.zig index f063ecf7..de5ad62c 100644 --- a/src/browser/Session.zig +++ b/src/browser/Session.zig @@ -236,6 +236,9 @@ pub fn releaseOrigin(self: *Session, origin: *js.Origin) void { /// Reset page_arena and factory for a clean slate. /// Called when root page is removed. fn resetPageResources(self: *Session) void { + self.identity.deinit(); + self.identity = .{}; + // Force cleanup all remaining finalized objects { var it = self.finalizer_callbacks.valueIterator(); @@ -260,9 +263,6 @@ fn resetPageResources(self: *Session) void { self.temps = .empty; } - self.identity.deinit(); - self.identity = .{}; - if (comptime IS_DEBUG) { std.debug.assert(self.origins.count() == 0); }