Skip to content

Race condition when opening a new window in New Identity

I think that we have a race condition during the new identity.

It's especially visible when loggers try to do something, but we don't have a window yet:

[Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIDocShell.domWindow]"  nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"  location: "JS frame :: resource://devtools/server/actors/targets/window-global.js :: get window :: line 422"  data: no] window-global.js:422:5
    get window resource://devtools/server/actors/targets/window-global.js:422
    _getWindowForBrowserConsole resource://devtools/server/actors/webconsole.js:269
    get global resource://devtools/server/actors/webconsole.js:247
    makeDebuggeeValue resource://devtools/server/actors/webconsole.js:470
    arguments resource://devtools/server/actors/webconsole.js:2058
    map self-hosted:180
    prepareConsoleMessageForRemote resource://devtools/server/actors/webconsole.js:2057
    onConsoleAPICall resource://devtools/server/actors/webconsole.js:1793
    onConsoleAPICall self-hosted:1115
    onConsoleAPILogEvent resource://devtools/server/actors/webconsole/listeners/console-api.js:115
    onConsoleAPILogEvent self-hosted:1115
    CS_recordEvent resource://gre/modules/ConsoleAPIStorage.jsm:174
    Redux 3
    React 13
    dispatchInteractiveEvent self-hosted:1162

I've got it also when the TorProtolService tried to log some errors because I had killed tor to do some tests (so, the result was that the original issues were even more difficult to debug, because I had these errors, instead).
At a certain point I've seen it also with our connection pill and browser.js in the stack trace, but I don't remember all the details.

I think that at the moment things usually work as expected, except when we have some logs (usually in error states?).

So, I propose promiseing the new window, and awaiting for it, either before or after closing the old windows.

I suppose it should not make a big difference, and in any case relying on some race condition to make sure new identity works doesn't seem a good idea.

In this way I could not get any more of these errors.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information