Call Inpsector::ContextDestroyed

This seems to solve some potential use-after-free issues. By informing the
Inspector that the context is gone, it seems to effectively ensure that no more
messages are sent from the inspector for things related to the context.
This commit is contained in:
Karl Seguin committed 2026-02-04 16:24:48 +08:00
1 parent 3c635532c4
commit fbd554a15f
2 files changed
+12 -3

No files matched your search

+10 -1
View File
@@ -264,8 +264,17 @@ pub fn destroyContext(self: *Env, context: *Context) void {
@panic("Tried to remove unknown context");
}
}
const isolate = self.isolate;
if (self.inspector) |inspector| {
var hs: js.HandleScope = undefined;
hs.init(isolate);
defer hs.deinit();
inspector.contextDestroyed(@ptrCast(v8.v8__Global__Get(&context.handle, isolate.handle)));
}
context.deinit();
self.isolate.notifyContextDisposed();
isolate.notifyContextDisposed();
}
pub fn runMicrotasks(self: *const Env) void {
+2 -2
View File
@@ -128,8 +128,8 @@ pub fn contextCreated(
}
}
pub fn contextDestroyed(self: *Inspector, local: *const js.Local) void {
v8.v8_inspector__Inspector__ContextDestroyed(self.handle, local.handle);
pub fn contextDestroyed(self: *Inspector, context: *const v8.Context) void {
v8.v8_inspector__Inspector__ContextDestroyed(self.handle, context);
}
pub fn resetContextGroup(self: *const Inspector) void {