Open Bug 1464603 Opened 7 years ago Updated 3 years ago

ObjectWithURL previewer can throw

Categories

(DevTools :: Console, defect, P2)

defect

Tracking

(Not tracked)

People

(Reporter: Oriol, Unassigned)

Details

Run this code in the browser console: var win = OpenBrowserWindow(); win.close(); setTimeout(() => console.log([win]), 5e3); Result: ObjectActor.prototype.grip previewer function threw an exception: [Exception... "Illegal value" nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)" location: "JS frame :: resource://devtools/shared/base-loader.js -> resource://devtools/server/actors/object/previewers.js :: ObjectWithURL :: line 527" data: no] Stack: ObjectWithURL@resource://devtools/shared/base-loader.js -> resource://devtools/server/actors/object/previewers.js:527:7 grip@resource://devtools/shared/base-loader.js -> resource://devtools/server/actors/object.js:161:13 objectGrip@resource://devtools/shared/base-loader.js -> resource://devtools/server/actors/webconsole.js:486:12 createValueGrip@resource://devtools/shared/base-loader.js -> resource://devtools/server/actors/object/utils.js:106:14 createValueGrip@resource://devtools/shared/base-loader.js -> resource://devtools/server/actors/webconsole.js:435:12 createValueGrip@resource://devtools/shared/base-loader.js -> resource://devtools/server/actors/webconsole.js:479:29 previewers.Array<@resource://devtools/shared/base-loader.js -> resource://devtools/server/actors/object/previewers.js:142:20 grip@resource://devtools/shared/base-loader.js -> resource://devtools/server/actors/object.js:161:13 objectGrip@resource://devtools/shared/base-loader.js -> resource://devtools/server/actors/webconsole.js:486:12 createValueGrip@resource://devtools/shared/base-loader.js -> resource://devtools/server/actors/object/utils.js:106:14 createValueGrip@resource://devtools/shared/base-loader.js -> resource://devtools/server/actors/webconsole.js:435:12 prepareConsoleMessageForRemote/result.arguments<@resource://devtools/shared/base-loader.js -> resource://devtools/server/actors/webconsole.js:1807:14 prepareConsoleMessageForRemote@resource://devtools/shared/base-loader.js -> resource://devtools/server/actors/webconsole.js:1805:24 onConsoleAPICall@resource://devtools/shared/base-loader.js -> resource://devtools/server/actors/webconsole.js:1619:16 observe@resource://devtools/shared/base-loader.js -> resource://devtools/server/actors/webconsole/listeners.js:262:5 CS_recordEvent@jar:file:///C:/Program%20Files/Mozilla%20Firefox/Test/omni.ja!/components/ConsoleAPIStorage.js:135:5 @debugger eval code:3:18 setTimeout handler*@debugger eval code:3:1 evalWithDebugger@resource://devtools/shared/base-loader.js -> resource://devtools/server/actors/webconsole.js:1418:16 evaluateJS@resource://devtools/shared/base-loader.js -> resource://devtools/server/actors/webconsole.js:926:20 evaluateJSAsync@resource://devtools/shared/base-loader.js -> resource://devtools/server/actors/webconsole.js:897:20 onPacket@resource://devtools/shared/base-loader.js -> resource://devtools/server/main.js:1761:15 send/<@resource://devtools/shared/base-loader.js -> resource://devtools/shared/transport/transport.js:553:13 exports.makeInfallible/<@resource://devtools/shared/base-loader.js -> resource://devtools/shared/ThreadSafeDevToolsUtils.js:109:14 exports.makeInfallible/<@resource://devtools/shared/base-loader.js -> resource://devtools/shared/ThreadSafeDevToolsUtils.js:109:14 Line: 527, column: 0 Seriously, running getters in rawObj with no check is a bad idea. Can fail in lots of different ways, the above just an example. DevToolsUtils has some methods to do this kind of things in a safe way. https://searchfox.org/mozilla-central/rev/ce86c6c0472d5021ef693cf99abaaa0644c89e55/devtools/server/actors/object/previewers.js#527
Priority: -- → P2
Product: Firefox → DevTools
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.