Merge pull request #1131 from lightpanda-io/microtask-queue-drain

drain micro task queue before reset ExecutionWorld and page
This commit is contained in:
Karl Seguin authored and GitHub committed 2025-10-09 08:36:26 +08:00
commit 2d6e2551f6
2 files changed
+9

No files matched your search

+6
View File
@@ -231,6 +231,12 @@ pub fn createContext(self: *ExecutionWorld, page: *Page, enter: bool, global_cal
}
pub fn removeContext(self: *ExecutionWorld) void {
// Force running the micro task to drain the queue before reseting the
// context arena.
// Tasks in the queue are relying to the arena memory could be present in
// the queue. Running them later could lead to invalid memory accesses.
self.env.runMicrotasks();
self.context.?.deinit();
self.context = null;
_ = self.context_arena.reset(.{ .retain_with_limit = CONTEXT_ARENA_RETAIN });
+3
View File
@@ -161,6 +161,9 @@ pub const Page = struct {
}
fn reset(self: *Page) void {
// Force running the micro task to drain the queue.
self.session.browser.env.runMicrotasks();
self.scheduler.reset();
self.http_client.abort();
self.script_manager.reset();