Closed Bug 1726463 Opened 3 years ago Closed 3 years ago

Permanent devtools/server/tests/chrome/test_inspector-dead-nodes.html | TypeError: this.targetFront is null when Gecko 93 merges to Beta on 2021-09-06

Categories

(DevTools :: General, defect)

defect

Tracking

(firefox-esr78 unaffected, firefox-esr91 unaffected, firefox91 unaffected, firefox92 unaffected, firefox93+ verified)

VERIFIED FIXED
93 Branch
Tracking Status
firefox-esr78 --- unaffected
firefox-esr91 --- unaffected
firefox91 --- unaffected
firefox92 --- unaffected
firefox93 + verified

People

(Reporter: aryx, Assigned: jdescottes)

References

(Blocks 1 open bug)

Details

(Keywords: regression)

Attachments

(1 file)

Could this be from bug 1702715? This hadn't been observed on Tuesday.

[task 2021-08-18T19:14:45.204Z] 19:14:45     INFO - Start watching for root nodes and wait for the initial root node
[task 2021-08-18T19:14:45.205Z] 19:14:45     INFO - Getting a nodeFront, reloading the page, and calling walker.children(nodeFront) before the load completes shouldn't fail
[task 2021-08-18T19:14:45.205Z] 19:14:45     INFO - Buffered messages finished
[task 2021-08-18T19:14:45.206Z] 19:14:45     INFO - TEST-UNEXPECTED-FAIL | devtools/server/tests/chrome/test_inspector-dead-nodes.html | TypeError: this.targetFront is null 
Flags: needinfo?(hmanilla)

Yes, this is a regression from bug 1702715, there is a bad interaction between two prefs:

  • devtools.browsertoolbox.fission=false
  • devtools.target-switching.server.enabled=true

The first one is true on Nightly only, the second one was flipped to true after bug 1702715.

Flags: needinfo?(hmanilla)
Assignee: nobody → jdescottes
Status: NEW → ASSIGNED

The issue comes from this NodeFront getter:

  get remoteFrame() {
    if (!BROWSER_TOOLBOX_FISSION_ENABLED && this.targetFront.isParentProcess) {
      return false;
    }

    return this._form.remoteFrame;
  }

On Beta, BROWSER_TOOLBOX_FISSION_ENABLED is false so we check this.targetFront.isParentProcess.
However after Bug 1702715, targets are destroyed on reload, and we happen to call this on NodeFront from a reloaded target.
This means the NodeFront is now destroyed and this.targetFront is null.

This test seems borderline irrelevant. It was supposed to test calling APIs during reload, however the objects on which the APIs are called are now destroyed on reload. We already had to modify the test to make it fully wait for the reload to be over, it's not clear if we should keep this test.

Blocks: 1726597
Pushed by jdescottes@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/ba789be08c4e
[devtools] Avoid error in NodeFront remoteFrame() if devtools.browsertoolbox.fission=false r=bomsy
Status: ASSIGNED → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 93 Branch
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: