Closed
Bug 1003055
Opened 11 years ago
Closed 10 years ago
"Connection closed" error when tab or toolbox is closed
Categories
(DevTools :: Inspector, defect)
DevTools
Inspector
Tracking
(Not tracked)
RESOLVED
WORKSFORME
People
(Reporter: pbro, Unassigned)
Details
Attachments
(1 file)
1.83 KB,
patch
|
Details | Diff | Splinter Review |
STR:
- Open the inspector on about:home
- Close the tab (not just the toolbox)
--> The following error is displayed in the logs:
console.error:
Message: Error: Connection closed
Stack:
Front<.destroy@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/protocol.js:1041:7
exports.WalkerFront<.destroy@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/actors/inspector.js:2103:5
frontProto/</proto[name]/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/protocol.js:1223:11
resolve@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/deprecated-sync-thenables.js:40:11
then@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/deprecated-sync-thenables.js:20:43
resolve@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/deprecated-sync-thenables.js:72:11
resolve@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/deprecated-sync-thenables.js:40:11
then@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/deprecated-sync-thenables.js:20:43
resolve@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/deprecated-sync-thenables.js:72:11
resolve@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/deprecated-sync-thenables.js:40:11
then@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/deprecated-sync-thenables.js:20:43
resolve@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/deprecated-sync-thenables.js:72:11
Front<.onPacket@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/protocol.js:1112:7
DebuggerClient.prototype.onPacket/<@resource://gre/modules/devtools/dbg-client.jsm:693:9
resolve@resource://gre/modules/devtools/deprecated-sync-thenables.js:40:11
then@resource://gre/modules/devtools/deprecated-sync-thenables.js:20:43
then@resource://gre/modules/devtools/deprecated-sync-thenables.js:58:9
DebuggerClient.prototype.onPacket@resource://gre/modules/devtools/dbg-client.jsm:735:1
LDT_send/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/transport.js:279:11
makeInfallible/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/DevToolsUtils.js:84:7
As far as I was able to investigate, here is what's going on:
- some pages mutate markup when the tab is closed, in the case of about:home, there's an attribute that's removed or added on <html>
- this makes the WalkerActor fire a "new-mutations" event right when the toolbox is being closed and the server being shutdown and actors disconnected
- the WalkerFront defines a preEvent custom method which is executed when the event is received on the front. It uses this to, in turn, send a request to the actor: getMutations
- protocol.js rejects this request because it is destroying the front.
Reporter | ||
Comment 1•11 years ago
|
||
Another set of STRs:
- go to google.com
- open the inspector
- close the toolbox (not the tab this time)
--> Same error in the logs.
Reporter | ||
Comment 2•11 years ago
|
||
(In reply to Patrick Brosset [:pbrosset] [:patrick] from comment #0)
> - some pages mutate markup when the tab is closed, in the case of
> about:home, there's an attribute that's removed or added on <html>
> - this makes the WalkerActor fire a "new-mutations" event right when the
> toolbox is being closed and the server being shutdown and actors disconnected
> - the WalkerFront defines a preEvent custom method which is executed when
> the event is received on the front. It uses this to, in turn, send a request
> to the actor: getMutations
> - protocol.js rejects this request because it is destroying the front.
not because it is destroying the front, but rather because the actor has already been destroyed in the meantime.
(In reply to Patrick Brosset [:pbrosset] [:patrick] from comment #1)
> Another set of STRs:
> - go to google.com
> - open the inspector
> - close the toolbox (not the tab this time)
> --> Same error in the logs.
Most probably due to the fact that google.com mutates nodes on window resize and closing the toolbox changes the window size.
Reporter | ||
Comment 3•11 years ago
|
||
This silences 1 of the stack traces in the logs.
We had a console.error rejected promise handler in the WalkerFront's preEvent method which I think isn't really needed.
Still, the error thrown in protocol.js [1] goes into the log.
I can't really think of a way to fix this to be honest. The problem comes from the way the walker actor and front are working together and from the fact that there doesn't seem to be a way for the front or actor to know if the other side still exists unless by trying to send a request or a response.
[1] http://mxr.mozilla.org/mozilla-central/source/toolkit/devtools/server/protocol.js#1040
Reporter | ||
Comment 4•10 years ago
|
||
This doesn't happen anymore.
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → WORKSFORME
Updated•7 years ago
|
Product: Firefox → DevTools
You need to log in
before you can comment on or make changes to this bug.
Description
•