Closed Bug 1384641 Opened 7 years ago Closed 6 years ago

13,500 instances of "NS_ENSURE_TRUE(weak) failed" emitted from dom/base/nsFrameMessageManager.cpp during linux64 debug testing

Categories

(Remote Protocol :: Marionette, defect, P3)

defect

Tracking

(firefox59 fixed)

RESOLVED FIXED
mozilla59
Tracking Status
firefox59 --- fixed

People

(Reporter: erahm, Assigned: ato)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

> 13480 WARNING: NS_ENSURE_TRUE(weak) failed: file dom/base/nsFrameMessageManager.cpp, line 343

This warning [1] shows up in the following test suites:

>   1946 - test-linux64/debug-marionette-e10s Mn
>   1943 - test-linux64/debug-marionette Mn
>   1880 - test-linux64/debug-marionette-headless-e10s MnH
>   1877 - test-linux64/debug-marionette-headless MnH
>    172 - test-linux64/debug-firefox-ui-functional-local-e10s en-US
>    172 - test-linux64/debug-firefox-ui-functional-local en-US
>    150 - test-linux64/debug-web-platform-tests-1 wpt1
>    148 - test-linux64/debug-web-platform-tests-e10s-1 wpt1
>    134 - test-linux64/debug-web-platform-tests-e10s-9 wpt9
>    134 - test-linux64/debug-web-platform-tests-9 wpt9
>    132 - test-linux64/debug-web-platform-tests-10 wpt10
>    130 - test-linux64/debug-web-platform-tests-11 wpt11
>    130 - test-linux64/debug-web-platform-tests-e10s-11 wpt11
>    128 - test-linux64/debug-web-platform-tests-e10s-10 wpt10
>    126 - test-linux64/debug-web-platform-tests-6 wpt6
>    126 - test-linux64/debug-web-platform-tests-12 wpt12
>    126 - test-linux64/debug-web-platform-tests-e10s-12 wpt12
>    124 - test-linux64/debug-web-platform-tests-3 wpt3
>    124 - test-linux64/debug-web-platform-tests-e10s-3 wpt3
>    122 - test-linux64/debug-web-platform-tests-e10s-6 wpt6
>    120 - test-linux64/debug-web-platform-tests-4 wpt4
>    120 - test-linux64/debug-web-platform-tests-e10s-4 wpt4
>    114 - test-linux64/debug-web-platform-tests-e10s-8 wpt8
>    114 - test-linux64/debug-web-platform-tests-8 wpt8
>    104 - test-linux64/debug-web-platform-tests-e10s-7 wpt7
>    104 - test-linux64/debug-web-platform-tests-2 wpt2
>    104 - test-linux64/debug-web-platform-tests-7 wpt7
>    104 - test-linux64/debug-web-platform-tests-e10s-5 wpt5
>    104 - test-linux64/debug-web-platform-tests-e10s-2 wpt2
>    104 - test-linux64/debug-web-platform-tests-5 wpt5
>     74 - test-linux64/debug-web-platform-tests-reftests-e10s-4 Wr4
>     74 - test-linux64/debug-web-platform-tests-reftests-4 Wr4
>     68 - test-linux64/debug-web-platform-tests-reftests-e10s-5 Wr5
>     68 - test-linux64/debug-mochitest-chrome-3 c3
>     68 - test-linux64/debug-web-platform-tests-reftests-5 Wr5
>     68 - test-linux64/debug-mochitest-chrome-1 c1
>     66 - test-linux64/debug-mochitest-clipboard cl
>     64 - test-linux64/debug-web-platform-tests-reftests-1 Wr1
>     64 - test-linux64/debug-web-platform-tests-reftests-e10s-1 Wr1
>     62 - test-linux64/debug-mochitest-clipboard-e10s cl
>     58 - test-linux64/debug-web-platform-tests-reftests-2 Wr2
>     58 - test-linux64/debug-web-platform-tests-reftests-e10s-2 Wr2
>     54 - test-linux64/debug-web-platform-tests-reftests-6 Wr6
>     54 - test-linux64/debug-web-platform-tests-reftests-3 Wr3
>     54 - test-linux64/debug-web-platform-tests-reftests-e10s-3 Wr3
>     54 - test-linux64/debug-web-platform-tests-reftests-e10s-6 Wr6
>     50 - test-linux64/debug-mochitest-chrome-2 c2
>     42 - test-linux64/debug-firefox-ui-functional-remote en-US
>     40 - test-linux64/debug-firefox-ui-functional-remote-e10s en-US
>     36 - test-linux64/debug-mochitest-5 5
>     32 - test-linux64/debug-mochitest-e10s-5 5
>     32 - test-linux64/debug-mochitest-e10s-10 10
>     30 - test-linux64/debug-mochitest-e10s-6 6
>     30 - test-linux64/debug-mochitest-e10s-3 3
>     30 - test-linux64/debug-mochitest-10 10
>     30 - test-linux64/debug-mochitest-6 6
>     28 - test-linux64/debug-mochitest-e10s-8 8
>     28 - test-linux64/debug-mochitest-e10s-2 2
>     28 - test-linux64/debug-mochitest-4 4
>     28 - test-linux64/debug-mochitest-e10s-9 9
>     28 - test-linux64/debug-mochitest-e10s-7 7
>     28 - test-linux64/debug-mochitest-1 1
>     28 - test-linux64/debug-mochitest-2 2
>     28 - test-linux64/debug-mochitest-e10s-1 1
>     28 - test-linux64/debug-mochitest-9 9
>     28 - test-linux64/debug-mochitest-7 7
>     26 - test-linux64/debug-mochitest-8 8
>     26 - test-linux64/debug-mochitest-browser-chrome-e10s-7 bc7
>     26 - test-linux64/debug-mochitest-browser-chrome-10 bc10
>     26 - test-linux64/debug-mochitest-browser-chrome-6 bc6
>     26 - test-linux64/debug-mochitest-browser-chrome-e10s-6 bc6
>     26 - test-linux64/debug-mochitest-e10s-4 4
>     26 - test-linux64/debug-mochitest-browser-chrome-e10s-10 bc10
>     26 - test-linux64/debug-mochitest-browser-chrome-8 bc8
>     26 - test-linux64/debug-mochitest-browser-chrome-5 bc5
>     26 - test-linux64/debug-mochitest-3 3
>     24 - test-linux64/debug-mochitest-browser-chrome-e10s-3 bc3
>     24 - test-linux64/debug-mochitest-browser-chrome-1 bc1
>     24 - test-linux64/debug-mochitest-browser-chrome-e10s-11 bc11
>     24 - test-linux64/debug-mochitest-browser-chrome-e10s-1 bc1
>     24 - test-linux64/debug-mochitest-browser-chrome-7 bc7
>     24 - test-linux64/debug-mochitest-browser-chrome-2 bc2
>     24 - test-linux64/debug-mochitest-browser-chrome-3 bc3
>     22 - test-linux64/debug-mochitest-browser-chrome-e10s-2 bc2
>     22 - test-linux64/debug-mochitest-browser-chrome-9 bc9
>     22 - test-linux64/debug-mochitest-browser-chrome-e10s-4 bc4
>     22 - test-linux64/debug-mochitest-browser-chrome-e10s-9 bc9
>     20 - test-linux64/debug-mochitest-browser-chrome-e10s-8 bc8
>     18 - test-linux64/debug-mochitest-browser-chrome-4 bc4
>     16 - test-linux64/debug-mochitest-browser-chrome-e10s-5 bc5
>     16 - test-linux64/debug-mochitest-gpu-e10s gpu
>     14 - test-linux64/debug-mochitest-devtools-chrome-e10s-6 dt6
>     12 - test-linux64/debug-mochitest-devtools-chrome-e10s-2 dt2
>     12 - test-linux64/debug-mochitest-media-3 mda3
>     12 - test-linux64/debug-mochitest-devtools-chrome-3 dt3
>     12 - test-linux64/debug-mochitest-media-e10s-3 mda3
>     12 - test-linux64/debug-mochitest-devtools-chrome-1 dt1
>     12 - test-linux64/debug-mochitest-devtools-chrome-2 dt2
>     10 - test-linux64/debug-mochitest-devtools-chrome-e10s-8 dt8
>     10 - test-linux64/debug-telemetry-tests-client-e10s tc-e10s
>     10 - test-linux64/debug-mochitest-devtools-chrome-e10s-5 dt5
>     10 - test-linux64/debug-mochitest-devtools-chrome-5 dt5
>      8 - test-linux64/debug-mochitest-devtools-chrome-e10s-3 dt3
>      8 - test-linux64/debug-mochitest-devtools-chrome-4 dt4
>      8 - test-linux64/debug-mochitest-webgl-3 gl3
>      8 - test-linux64/debug-mochitest-webgl-e10s-3 gl3
>      6 - test-linux64/debug-mochitest-devtools-chrome-e10s-4 dt4
>      6 - test-linux64/debug-mochitest-devtools-chrome-7 dt7
>      6 - test-linux64/debug-mochitest-media-2 mda2
>      6 - test-linux64/debug-mochitest-media-e10s-2 mda2
>      6 - test-linux64/debug-mochitest-devtools-chrome-8 dt8
>      4 - test-linux64/debug-mochitest-jetpack JP
>      4 - test-linux64/debug-mochitest-devtools-chrome-e10s-1 dt1
>      4 - test-linux64/debug-mochitest-media-1 mda1
>      4 - test-linux64/debug-mochitest-devtools-chrome-6 dt6
>      4 - test-linux64/debug-mochitest-devtools-chrome-9 dt9
>      4 - test-linux64/debug-mochitest-webgl-e10s-1 gl1
>      4 - test-linux64/debug-mochitest-devtools-chrome-e10s-7 dt7
>      4 - test-linux64/debug-mochitest-webgl-1 gl1
>      4 - test-linux64/debug-mochitest-media-e10s-1 mda1
>      2 - test-linux64/debug-reftest-e10s-7 R7
>      2 - test-linux64/debug-reftest-2 R2
>      2 - test-linux64/debug-reftest-e10s-8 R8
>      2 - test-linux64/debug-mochitest-webgl-e10s-2 gl2
>      2 - test-linux64/debug-reftest-no-accel-4 Ru4
>      2 - test-linux64/debug-mochitest-browser-chrome-16 bc16
>      2 - test-linux64/debug-reftest-no-accel-6 Ru6
>      2 - test-linux64/debug-reftest-1 R1
>      2 - test-linux64/debug-reftest-no-accel-3 Ru3
>      2 - test-linux64/debug-reftest-e10s-5 R5
>      2 - test-linux64/debug-jsreftest-e10s-3 J3
>      2 - test-linux64/debug-mochitest-browser-chrome-11 bc11
>      2 - test-linux64/debug-reftest-no-accel-5 Ru5
>      2 - test-linux64/debug-reftest-5 R5
>      2 - test-linux64/debug-mochitest-browser-chrome-e10s-14 bc14
>      2 - test-linux64/debug-reftest-no-accel-2 Ru2
>      2 - test-linux64/debug-reftest-no-accel-e10s-1 Ru1
>      2 - test-linux64/debug-mochitest-webgl-2 gl2
>      2 - test-linux64/debug-reftest-no-accel-7 Ru7
>      2 - test-linux64/debug-mochitest-devtools-chrome-e10s-9 dt9
>      2 - test-linux64/debug-crashtest C
>      2 - test-linux64/debug-reftest-7 R7
>      2 - test-linux64/debug-reftest-no-accel-e10s-2 Ru2
>      2 - test-linux64/debug-reftest-no-accel-8 Ru8
>      2 - test-linux64/debug-mochitest-browser-chrome-13 bc13
>      2 - test-linux64/debug-jsreftest-e10s-2 J2
>      2 - test-linux64/debug-jsreftest-e10s-1 J1
>      2 - test-linux64/debug-reftest-e10s-2 R2
>      2 - test-linux64/debug-mochitest-browser-chrome-15 bc15
>      2 - test-linux64/debug-mochitest-browser-chrome-14 bc14
>      2 - test-linux64/debug-jsreftest-3 J3
>      2 - test-linux64/debug-mochitest-browser-chrome-e10s-16 bc16
>      2 - test-linux64/debug-reftest-3 R3
>      2 - test-linux64/debug-reftest-e10s-6 R6
>      2 - test-linux64/debug-reftest-4 R4
>      2 - test-linux64/debug-mochitest-devtools-chrome-10 dt10
>      2 - test-linux64/debug-reftest-no-accel-e10s-4 Ru4
>      2 - test-linux64/debug-reftest-no-accel-e10s-6 Ru6
>      2 - test-linux64/debug-mochitest-a11y a11y
>      2 - test-linux64/debug-reftest-6 R6
>      2 - test-linux64/debug-reftest-no-accel-e10s-5 Ru5
>      2 - test-linux64/debug-jsreftest-1 J1
>      2 - test-linux64/debug-mochitest-browser-chrome-12 bc12
>      2 - test-linux64/debug-reftest-e10s-3 R3
>      2 - test-linux64/debug-reftest-no-accel-e10s-8 Ru8
>      2 - test-linux64/debug-reftest-no-accel-e10s-7 Ru7
>      2 - test-linux64/debug-mochitest-browser-chrome-e10s-15 bc15
>      2 - test-linux64/debug-reftest-e10s-4 R4
>      2 - test-linux64/debug-mochitest-devtools-chrome-e10s-10 dt10
>      2 - test-linux64/debug-mochitest-browser-chrome-e10s-13 bc13
>      2 - test-linux64/debug-reftest-8 R8
>      2 - test-linux64/debug-jsreftest-2 J2
>      2 - test-linux64/debug-mochitest-browser-chrome-e10s-12 bc12
>      2 - test-linux64/debug-reftest-no-accel-1 Ru1
>      2 - test-linux64/debug-reftest-e10s-1 R1
>      2 - test-linux64/debug-reftest-no-accel-e10s-3 Ru3
>      2 - test-linux64/debug-crashtest-e10s C

It shows up in 3790 tests. A few of the most prevalent:

>    808 -        Shutdown
>    646 - [e10s] Shutdown
>     23 - [e10s] test_navigation.py TestTLSNavigation.test_deactivation
>     22 -        test_navigation.py TestTLSNavigation.test_deactivation
>     20 - [e10s] test_capabilities.py TestCapabilityMatching.test_page_load_strategy
>     20 -        test_capabilities.py TestCapabilityMatching.test_page_load_strategy
>     14 - [e10s] test_navigation.py TestTLSNavigation.test_navigate_by_command
>     13 - [e10s] test_accessibility.py TestAccessibility.test_send_keys_raises_no_exception
>     13 - [e10s] test_click.py TestClick.test_container_element_outside_view
>     13 - [e10s] test_click.py TestClick.test_centre_outside_viewport_vertically

[1] https://hg.mozilla.org/mozilla-central/annotate/e8400551c2e3/dom/base/nsFrameMessageManager.cpp#l343
Priority: -- → P3
I don't think there's much merrit in trying to track down stacks here as we already return NS_OK, indicating this is an expected condition.
Attachment #8926065 - Flags: review?(continuation)
Assignee: nobody → erahm
Status: NEW → ASSIGNED
Attachment #8926065 - Flags: review?(continuation) → review+
That warning hints about wrong usage of the API.
Do we have a JS stack trace?
(In reply to Olli Pettay [:smaug] from comment #2)
> That warning hints about wrong usage of the API.
> Do we have a JS stack trace?

For the marionette tests at least it appears to be when they delete their session [1]:

> 0 removeMessageManagerListeners() ["chrome://marionette/content/frame.js":249]
> 1 GeckoDriver.prototype.deleteSession() ["chrome://marionette/content/driver.js":2896]
> 2 onClosed() ["chrome://marionette/content/server.js":461]
> 3 close() ["chrome://marionette/content/transport.js":228]
> 4 close() ["self-hosted":950]
> 5 onInputStreamReady() ["chrome://marionette/content/transport.js":379]

:ato it looks like you've worked on this code before, any thoughts?

[1] http://searchfox.org/mozilla-central/rev/ed212c79cfe86357e9a5740082b9364e7f6e526f/testing/marionette/driver.js#2896-2897
Flags: needinfo?(ato)
The WPT warnings are also due to the same marionette issue.
The mochitest failures are the same as well:

> 1510082830833	Marionette	TRACE	1 -> [0,8,"deleteSession",{}]
> WARNING: NS_ENSURE_TRUE(weak) failed: file dom/base/nsFrameMessageManager.cpp, line 339

I'm just going to move this to marionette at this point.
Assignee: erahm → nobody
Status: ASSIGNED → NEW
Component: DOM → Marionette
Product: Core → Testing
I’m at W3C TPAC this week so my response time will be slower than
usual.  Just making a note to show I have seen and that I’m aware
of this.
Flags: needinfo?(ato)
Oops.
Flags: needinfo?(ato)
Depends on: 1423282
As part of a forthcoming refactoring of how Marionette keeps track
of windows and content browsers [1], I was working on a patch to
clean up deprecated support for B2G application frames [2].  This
work ended up removing testing/marionette/frame.js entirely and
reducing the number of message listeners a lot.  I believe that will
resolve this issue.

  [1] https://bugzil.la/marionette-window-tracking
  [2] https://bugzil.la/1423282
Assignee: nobody → ato
Status: NEW → ASSIGNED
Flags: needinfo?(ato)
As I said in my previous comment, I believe this was resolved by
removing testing/marionette/frame.js in its entirety.  Marionette
no longer uses addWeakMessageListener.
Status: ASSIGNED → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
(In reply to Andreas Tolfsen ‹:ato› from comment #9)
> As I said in my previous comment, I believe this was resolved by
> removing testing/marionette/frame.js in its entirety.  Marionette
> no longer uses addWeakMessageListener.

Confirmed that this no longer warns on the latest m-c test runs.
Target Milestone: --- → mozilla59
Product: Testing → Remote Protocol
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: