Files
sousa-gecko/dom/console/tests/ConsoleStorageLeakHelper.sys.mjs
T
Florian Quèze 73760782af Bug 2030481 - Derive console storage key from stack and argument globals for system module messages, r=dom-core,smaug.
ConsoleAPIStorage stores messages from system modules (.sys.mjs) under
filename-based keys. inner-window-destroyed only clears numeric window
ID keys, so these entries persist and can leak chrome windows.

When mInnerID is 0 (non-window realm), derive the storage key from the
first window found in three places:
- The captured stack's SavedFrame globals (for chrome windows with their
  own compartment, e.g. aiWindow.html).
- The message argument globals (for objects created in a window realm).
- Sandbox argument globals whose prototype is a window (for errors
  created in DevTools sandboxes).

Differential Revision: https://phabricator.services.mozilla.com/D292956
2026-04-17 12:21:33 +00:00

16 lines
593 B
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// System module whose console has mInnerID=0: messages are stored under
// a filename key in ConsoleAPIStorage, not under a numeric window ID.
export function logError(err) {
console.error(err);
}
export function logSandboxError(win) {
let sb = Cu.Sandbox(win, { sandboxPrototype: win });
let err = Cu.evalInSandbox(`new Error("sandbox leak test")`, sb);
console.error(err);
}