Intermittent browser/base/content/test/webrtc/browser_devices_select_audio_output.js | single tracking bug
Categories
(Toolkit :: UI Widgets, defect, P5)
Tracking
()
People
(Reporter: intermittent-bug-filer, Assigned: pehrsons)
References
(Depends on 1 open bug, Regression)
Details
(Keywords: intermittent-failure, intermittent-testcase, regression)
Attachments
(6 files, 1 obsolete file)
Filed by: nfay [at] mozilla.com
Parsed log: https://treeherder.mozilla.org/logviewer?job_id=453791690&repo=autoland
Full log: https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/Th7FJd87QhKM__Dt68Rziw/runs/0/artifacts/public/logs/live_backing.log
[task 2024-04-07T01:12:20.610Z] 01:12:20 INFO - TEST-PASS | browser/base/content/test/webrtc/browser_devices_select_audio_output.js | aria-describedby -
[task 2024-04-07T01:12:20.610Z] 01:12:20 INFO - TEST-PASS | browser/base/content/test/webrtc/browser_devices_select_audio_output.js | screen selector hidden -
[task 2024-04-07T01:12:20.611Z] 01:12:20 INFO - Console message: [JavaScript Warning: "Empty string passed to getElementById()." {file: "chrome://global/content/elements/richlistbox.js" line: 711}]
[task 2024-04-07T01:12:20.611Z] 01:12:20 INFO - Expect same-device request allowed without prompt
[task 2024-04-07T01:12:20.612Z] 01:12:20 INFO - Expect prompt for different-device request
[task 2024-04-07T01:12:20.612Z] 01:12:20 INFO - Console message: [JavaScript Warning: "Empty string passed to getElementById()." {file: "chrome://global/content/elements/richlistbox.js" line: 711}]
[task 2024-04-07T01:12:20.612Z] 01:12:20 INFO - Buffered messages logged at 01:11:35
[task 2024-04-07T01:12:20.613Z] 01:12:20 INFO - Longer timeout required, waiting longer... Remaining timeouts: 1
[task 2024-04-07T01:12:20.614Z] 01:12:20 INFO - Buffered messages finished
[task 2024-04-07T01:12:20.614Z] 01:12:20 INFO - TEST-UNEXPECTED-FAIL | browser/base/content/test/webrtc/browser_devices_select_audio_output.js | Test timed out -
[task 2024-04-07T01:12:20.615Z] 01:12:20 INFO - GECKO(1116) | Completed ShutdownLeaks collections in process 4056
[task 2024-04-07T01:12:20.615Z] 01:12:20 INFO - TEST-START | Shutdown
[task 2024-04-07T01:12:20.616Z] 01:12:20 INFO - Browser Chrome Test Summary
[task 2024-04-07T01:12:20.616Z] 01:12:20 INFO - Passed: 5812
[task 2024-04-07T01:12:20.617Z] 01:12:20 INFO - Failed: 1
[task 2024-04-07T01:12:20.617Z] 01:12:20 INFO - Todo: 0
[task 2024-04-07T01:12:20.618Z] 01:12:20 INFO - Mode: e10s
[task 2024-04-07T01:12:20.618Z] 01:12:20 INFO - *** End BrowserChrome Test Results ***
[task 2024-04-07T01:12:20.619Z] 01:12:20 INFO - GECKO(1116) | Exiting due to channel error.
[task 2024-04-07T01:12:20.619Z] 01:12:20 INFO - TEST-INFO | Main app process: exit 0
[task 2024-04-07T01:12:20.619Z] 01:12:20 INFO - runtests.py | Application ran for: 0:02:48.553483
[task 2024-04-07T01:12:20.620Z] 01:12:20 INFO - zombiecheck | Reading PID log: C:\Users\task_171245152522058\AppData\Local\Temp\tmp269pvnx6pidlog
Comment hidden (Intermittent Failures Robot) |
Comment 2•1 year ago
|
||
https://wiki.mozilla.org/Bug_Triage#Intermittent_Test_Failure_Cleanup
For more information, please visit BugBot documentation.
Reporter | ||
Comment 3•1 year ago
|
||
treeherder |
New failure instance: https://treeherder.mozilla.org/logviewer?job_id=456958919&repo=mozilla-beta
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment 6•1 year ago
|
||
Here's a failure on test-verify:
https://treeherder.mozilla.org/logviewer?job_id=461367534&repo=try&lineNumber=2462
It really does look like this test simply takes a long time to run; we're seeing output up until the test times out. It is unclear why this test would run so slowly.
Comment 7•1 year ago
|
||
It also looks like each repetition of webrtc/browser_devices_select_audio_output.js takes longer than the last?
[task 2024-06-06T21:03:29.148Z] 21:03:29 INFO - TEST-START | browser/base/content/test/webrtc/browser_devices_select_audio_output.js
[task 2024-06-06T21:03:30.878Z] 21:03:30 INFO - GECKO(1193) | TEST DEVICES: No test devices found (in media.{audio,video}_loopback_dev, using fake streams.
[task 2024-06-06T21:03:34.116Z] 21:03:34 INFO - GECKO(1193) | 2024-06-06 21:03:34.115 firefox[1193:20026] Persistent UI failed to open file file:///Users/cltbld/Library/Saved%20Application%20State/org.mozilla.nightly.savedState/window_1.data: No such file or directory (2)
[task 2024-06-06T21:03:49.310Z] 21:03:49 INFO - GECKO(1193) | MEMORY STAT vsizeMaxContiguous not supported in this build configuration.
[task 2024-06-06T21:03:49.310Z] 21:03:49 INFO - GECKO(1193) | MEMORY STAT | vsize 7994MB | residentFast 297MB | heapAllocated 131MB
[task 2024-06-06T21:03:49.311Z] 21:03:49 INFO - TEST-OK | browser/base/content/test/webrtc/browser_devices_select_audio_output.js | took 20162ms
[task 2024-06-06T21:03:49.368Z] 21:03:49 INFO - checking window state
[task 2024-06-06T21:03:49.570Z] 21:03:49 INFO - TEST-START | browser/base/content/test/webrtc/browser_devices_select_audio_output.js
[task 2024-06-06T21:03:50.556Z] 21:03:50 INFO - GECKO(1193) | TEST DEVICES: No test devices found (in media.{audio,video}_loopback_dev, using fake streams.
[task 2024-06-06T21:04:20.893Z] 21:04:20 INFO - GECKO(1193) | MEMORY STAT | vsize 7992MB | residentFast 299MB | heapAllocated 131MB
[task 2024-06-06T21:04:20.893Z] 21:04:20 INFO - TEST-OK | browser/base/content/test/webrtc/browser_devices_select_audio_output.js | took 31323ms
[task 2024-06-06T21:04:20.976Z] 21:04:20 INFO - checking window state
[task 2024-06-06T21:04:21.175Z] 21:04:21 INFO - TEST-START | browser/base/content/test/webrtc/browser_devices_select_audio_output.js
[task 2024-06-06T21:04:21.968Z] 21:04:21 INFO - GECKO(1193) | TEST DEVICES: No test devices found (in media.{audio,video}_loopback_dev, using fake streams.
[task 2024-06-06T21:05:01.645Z] 21:05:01 INFO - GECKO(1193) | MEMORY STAT | vsize 7991MB | residentFast 299MB | heapAllocated 132MB
[task 2024-06-06T21:05:01.645Z] 21:05:01 INFO - TEST-OK | browser/base/content/test/webrtc/browser_devices_select_audio_output.js | took 40470ms
[task 2024-06-06T21:05:01.727Z] 21:05:01 INFO - checking window state
[task 2024-06-06T21:05:01.878Z] 21:05:01 INFO - TEST-START | browser/base/content/test/webrtc/browser_devices_select_audio_output.js
[task 2024-06-06T21:05:02.417Z] 21:05:02 INFO - GECKO(1193) | TEST DEVICES: No test devices found (in media.{audio,video}_loopback_dev, using fake streams.
[task 2024-06-06T21:05:57.885Z] 21:05:57 INFO - GECKO(1193) | MEMORY STAT | vsize 7991MB | residentFast 299MB | heapAllocated 130MB
[task 2024-06-06T21:05:57.885Z] 21:05:57 INFO - TEST-OK | browser/base/content/test/webrtc/browser_devices_select_audio_output.js | took 56008ms
[task 2024-06-06T21:05:57.977Z] 21:05:57 INFO - checking window state
[task 2024-06-06T21:05:58.162Z] 21:05:58 INFO - TEST-START | browser/base/content/test/webrtc/browser_devices_select_audio_output.js
[task 2024-06-06T21:05:59.088Z] 21:05:59 INFO - GECKO(1193) | TEST DEVICES: No test devices found (in media.{audio,video}_loopback_dev, using fake streams.
[task 2024-06-06T21:07:06.512Z] 21:07:06 INFO - GECKO(1193) | MEMORY STAT | vsize 7991MB | residentFast 299MB | heapAllocated 130MB
[task 2024-06-06T21:07:06.513Z] 21:07:06 INFO - TEST-OK | browser/base/content/test/webrtc/browser_devices_select_audio_output.js | took 68351ms
[task 2024-06-06T21:07:06.573Z] 21:07:06 INFO - checking window state
[task 2024-06-06T21:07:06.719Z] 21:07:06 INFO - TEST-START | browser/base/content/test/webrtc/browser_devices_select_audio_output.js
[task 2024-06-06T21:07:07.757Z] 21:07:07 INFO - GECKO(1193) | TEST DEVICES: No test devices found (in media.{audio,video}_loopback_dev, using fake streams.
[task 2024-06-06T21:08:26.271Z] 21:08:26 INFO - GECKO(1193) | MEMORY STAT | vsize 7989MB | residentFast 296MB | heapAllocated 131MB
[task 2024-06-06T21:08:26.272Z] 21:08:26 INFO - TEST-OK | browser/base/content/test/webrtc/browser_devices_select_audio_output.js | took 79553ms
[task 2024-06-06T21:08:26.343Z] 21:08:26 INFO - checking window state
[task 2024-06-06T21:08:26.518Z] 21:08:26 INFO - TEST-START | browser/base/content/test/webrtc/browser_devices_select_audio_output.js
[task 2024-06-06T21:08:27.109Z] 21:08:27 INFO - GECKO(1193) | TEST DEVICES: No test devices found (in media.{audio,video}_loopback_dev, using fake streams.
[task 2024-06-06T21:09:56.956Z] 21:09:56 INFO - GECKO(1193) | MEMORY STAT | vsize 7987MB | residentFast 297MB | heapAllocated 132MB
[task 2024-06-06T21:09:56.956Z] 21:09:56 INFO - TEST-OK | browser/base/content/test/webrtc/browser_devices_select_audio_output.js | took 90438ms
[task 2024-06-06T21:09:57.030Z] 21:09:57 INFO - checking window state
[task 2024-06-06T21:09:57.191Z] 21:09:57 INFO - TEST-START | browser/base/content/test/webrtc/browser_devices_select_audio_output.js
[task 2024-06-06T21:09:58.043Z] 21:09:58 INFO - GECKO(1193) | TEST DEVICES: No test devices found (in media.{audio,video}_loopback_dev, using fake streams.
[task 2024-06-06T21:11:42.520Z] 21:11:42 INFO - TEST-INFO | started process screencapture
[task 2024-06-06T21:11:42.644Z] 21:11:42 INFO - TEST-INFO | screencapture: exit 0
[task 2024-06-06T21:11:42.644Z] 21:11:42 INFO - <snipped 78 output lines - if you need more context, please use SimpleTest.requestCompleteLog() in your test>
Comment 9•1 year ago
•
|
||
I don't see anything obvious with the tests. They appear to take constant time on Windows. MacOS seems to be fairing the worst by a large margin. Linux oddly seems to be somewhere in the middle, but oddly recovers? (from GC maybe?)
In contrast, when I test locally on macOS the tests appear to run in constant time:
mach mochitest --run-until-failure browser/base/content/test/webrtc/browser_devices_select_audio_output.js
Could it be related to the new voice engine stuff in macOS Andreas was working on? — But AFAICT the tests only touch the front-end part of speaker selection, not playback. But the prompt code probably tickles cubeb. Is that right, Karl?
Comment 10•1 year ago
|
||
This is not a recent change in behavior. The timing still looks similar to bug 1775942 comment 7.
Chaos mode has been making tests timeout perhaps since it was introduced (bug 1734020).
I don't know whether or not the increasing time on each repetition is unique to this test.
Either --verify
or perhaps MOZ_CHAOSMODE=0xfb
would be needed to reproduce.
Comment 11•1 year ago
|
||
The test would trigger device enumeration, which might include cameras also.
Assignee | ||
Comment 12•1 year ago
•
|
||
The profile from bwc's try run in comment 6 is quite telling.
(In reply to Jan-Ivar Bruaroey [:jib] (needinfo? me) from comment #9)
Could it be related to the new voice engine stuff in macOS Andreas was working on?
The VoiceProcessingIO unit only kicks in if we request input audio from the cubeb backend, and AFAIK we use fake streams for getUserMedia everywhere in CI except on Linux. Even there I'm not sure if we use it
(In reply to Karl Tomlinson (:karlt) from comment #10)
Either
--verify
or perhapsMOZ_CHAOSMODE=0xfb
would be needed to reproduce.
I can confirm locally that MOZ_CHAOSMODE=0xfb
makes this reproduce, though not as grave.
I added a profiler marker locally for DelayForChaosMode
and ran
MOZ_CHAOSMODE=0xfb MOZ_PROFILER_STARTUP_FEATURES=markersallthreads MOZ_PROFILER_SYMBOLICATE=1 MOZ_PROFILER_SHUTDOWN=$PWD/mochitest-profile.json ./mach mochitest browser/base/content/test/webrtc/browser_devices_select_audio_output.js --repeat 5 --profiler
This seems to have only applied chaos mode to the parent process. I guess because of how I apply the env var? Maybe this is why the effect is less grave than on try, or my machine is just more powerful.
Regardless, here is the profile.
For the first test run there are 5519 "Delaying for chaos mode" markers on the parent process main thread, each a random sleep of <1ms.
For the fourth test run there are 16300 such markers.
Go figure.
There are also "Runnable" markers in this profile. Might be dandy to run some stats over, to see where all the extra delays are coming from.
Assignee | ||
Comment 13•1 year ago
|
||
Ok, I couldn't not do it.
For the run #1 and run #4 links above, by filtering markers on "Runnable" and running in the console:
var counts = {};
for (let {data} of window.filteredMarkers) {
if (!counts[data.name]) {
counts[data.name] = 1;
continue;
}
counts[data.name] += 1;
}
var arr = [];
for (let key of Object.keys(counts)) {
arr.push({name: key, count: counts[key]});
}
console.log(arr.toSorted((l, r) => r.count - l.count));
I get 216 distinct runnable names for run #1, with top 20 being:
0: Object { name: "LinkStyle::BindToTree", count: 1498 }
1: Object { name: "AsyncEventDispatcher", count: 1447 }
2: Object { name: "RefreshDriverVsyncObserver::NotifyVsyncTimerOnMainThread", count: 137 }
3: Object { name: "DelayedFireDOMPaintEvent", count: 122 }
4: Object { name: "PWindowGlobal::Msg_RawMessage", count: 118 }
5: Object { name: "FocusBlurEvent", count: 99 }
6: Object { name: "RefreshDriver::EnsureTimerStarted::extra", count: 94 }
7: Object { name: "PCompositorBridge::Msg_DidComposite", count: 82 }
8: Object { name: "PWindowGlobal::Msg_SetSingleChannelId", count: 63 }
9: Object { name: "CommandDispatcher", count: 62 }
10: Object { name: "nsHtml5SVGLoadDispatcher", count: 57 }
11: Object { name: "MozPromise::ThenValueBase::ResolveOrRejectRunnable", count: 55 }
12: Object { name: "PWindowGlobal::Msg_UpdateBFCacheStatus", count: 54 }
13: Object { name: "ProgressTracker::AsyncNotifyRunnable", count: 49 }
14: Object { name: "FocusInOutEvent", count: 47 }
15: Object { name: "RefreshDriver::EnsureTimerStarted::catch-up", count: 45 }
16: Object { name: "LocalizationRc::format_messages", count: 41 }
17: Object { name: "PContent::Msg_CommitWindowContextTransaction", count: 38 }
18: Object { name: "nsPipeInputStream AsyncWait Callback", count: 38 }
19: Object { name: "JSActor Async Message", count: 35 }
20: Object { name: "LayerActivityTracker", count: 32 }
and 203 distinct runnable names for run #4, with top 20 being:
0: Object { name: "LinkStyle::BindToTree", count: 6723 }
1: Object { name: "AsyncEventDispatcher", count: 6661 }
2: Object { name: "RefreshDriver::EnsureTimerStarted::extra", count: 817 }
3: Object { name: "RefreshDriverVsyncObserver::NotifyVsyncTimerOnMainThread", count: 120 }
4: Object { name: "PWindowGlobal::Msg_RawMessage", count: 117 }
5: Object { name: "DelayedFireDOMPaintEvent", count: 115 }
6: Object { name: "FocusBlurEvent", count: 99 }
7: Object { name: "PCompositorBridge::Msg_DidComposite", count: 73 }
8: Object { name: "CommandDispatcher", count: 61 }
9: Object { name: "PWindowGlobal::Msg_SetSingleChannelId", count: 59 }
10: Object { name: "PWindowGlobal::Msg_UpdateBFCacheStatus", count: 54 }
11: Object { name: "ProgressTracker::AsyncNotifyRunnable", count: 48 }
12: Object { name: "FocusInOutEvent", count: 47 }
13: Object { name: "LayerActivityTracker", count: 46 }
14: Object { name: "MozPromise::ThenValueBase::ResolveOrRejectRunnable", count: 45 }
15: Object { name: "RefreshDriver::EnsureTimerStarted::catch-up", count: 44 }
16: Object { name: "PContent::Msg_CommitWindowContextTransaction", count: 38 }
17: Object { name: "JSActor Async Message", count: 35 }
18: Object { name: "LocalizationRc::format_messages", count: 27 }
19: Object { name: "CompositorVsyncDispatcher::ObserveVsync", count: 26 }
20: Object { name: "Element::NotifyUAWidgetTeardownAndUnattachShadow::UAWidgetTeardown", count: 24 }
I'll note that during run #4 we see roughly 4x the number of LinkStyle::BindToTree
and AsyncEventDispatcher
runnables as in #1. The running time of #4 is about 2x that of #1.
Emilio, do you know if this is expected?
Assignee | ||
Comment 14•1 year ago
|
||
There are also DOMEvent markers so I'll add that for one of the first popupshowing
->popupshown
sequences in run #1 I count 28 load
events with target html:link
. The number of such events is steadily increasing throughout the profiles lifetime. Towards the end of run #4 I see 308 such events.
Smells like something is accumulating and not getting cleaned up but also this is outside my domain.
Comment 15•1 year ago
|
||
Did you lose window focus by any chance while reproducing it? The only time I managed to make the test fail was when switching the active window to something else. In that case, the popup didn't show up (but that's kind of expected), and the test timed out.
If the answer is "no" then I'd be curious to know how the failure looks like?
Re. whether this is expected, this means that something is adding links to the document, but these should be fairly short-lived runnables: https://searchfox.org/mozilla-central/rev/4582d908c17fbf7924f5699609fe4a12c28ddc4a/dom/base/LinkStyle.cpp#220, plus links probably get unloaded when the popup gets removed etc, so I don't think we're just leaking or anything, it's fairly common to add links in shadow dom.
Assignee | ||
Comment 16•1 year ago
|
||
No, the test doesn't time out locally. The failure mode is that it runs noticably slower for each iteration. This is only really noticable with chaos mode because of the random delays added. On certain hardware it leads to a test-verify timeout failure, like in CI.
Assignee | ||
Comment 17•1 year ago
|
||
I found the problem, and it seems like a frontend one. Same thing in webRTC-selectMicrophone-menulist
and webRTC-selectCamera-menulist
.
Assignee | ||
Comment 18•1 year ago
|
||
It seems to me that we append some children in menulist
's connectedCallback()
that are not removed in disconnectedCallback()
.
Comment 19•1 year ago
|
||
Set release status flags based on info from the regressing bug 1624482
Assignee | ||
Comment 20•1 year ago
|
||
Prior to bug 1624482 there's in connectedCallback()
a
this.prepend(MozMenuList.fragment.cloneNode(true));
and disconnectedCallback()
does not attempt to clean that up, so it may well be that the regressor is older than this.
I have a fix that seems to work in either case.
Here's a profile of running MOZ_CHAOSMODE=0xfb MOZ_PROFILER_SYMBOLICATE=1 MOZ_PROFILER_SHUTDOWN=$PWD/mochitest-profile.json ./mach mochitest browser/base/content/test/webrtc/browser_devices_select_audio_output.js --repeat 5 --profiler
with the fix.
Assignee | ||
Comment 21•1 year ago
|
||
Assignee | ||
Comment 22•1 year ago
|
||
Assignee | ||
Comment 23•1 year ago
|
||
Updated•1 year ago
|
Assignee | ||
Comment 24•1 year ago
|
||
Assignee | ||
Comment 25•1 year ago
|
||
Also noting some stats with the fix, to compare with comments 12 and 13.
For run #1 there are 3545 DelayForChaosMode
markers, and for run #4 there are 3127 such markers.
Top 20 runnables (of 229 distinct ones) for run #1:
0: Object { name: "AsyncEventDispatcher", count: 399 }
1: Object { name: "LinkStyle::BindToTree", count: 373 }
2: Object { name: "RefreshDriverVsyncObserver::NotifyVsyncTimerOnMainThread", count: 211 }
3: Object { name: "PWindowGlobal::Msg_RawMessage", count: 123 }
4: Object { name: "DelayedFireDOMPaintEvent", count: 121 }
5: Object { name: "FocusBlurEvent", count: 105 }
6: Object { name: "PCompositorBridge::Msg_DidComposite", count: 88 }
7: Object { name: "PWindowGlobal::Msg_SetSingleChannelId", count: 69 }
8: Object { name: "CommandDispatcher", count: 65 }
9: Object { name: "RefreshDriver::EnsureTimerStarted::catch-up", count: 62 }
10: Object { name: "MozPromise::ThenValueBase::ResolveOrRejectRunnable", count: 60 }
11: Object { name: "nsHtml5SVGLoadDispatcher", count: 57 }
12: Object { name: "PWindowGlobal::Msg_UpdateBFCacheStatus", count: 55 }
13: Object { name: "ProgressTracker::AsyncNotifyRunnable", count: 50 }
14: Object { name: "FocusInOutEvent", count: 49 }
15: Object { name: "LocalizationRc::format_messages", count: 42 }
16: Object { name: "PContent::Msg_CommitWindowContextTransaction", count: 42 }
17: Object { name: "nsPipeInputStream AsyncWait Callback", count: 40 }
18: Object { name: "JSActor Async Message", count: 39 }
19: Object { name: "LayerActivityTracker", count: 26 }
20: Object { name: "Element::NotifyUAWidgetTeardownAndUnattachShadow::UAWidgetTeardown", count: 25 }
and top 20 for run #4 out of 188 distinct runnables:
0: Object { name: "AsyncEventDispatcher", count: 431 }
1: Object { name: "LinkStyle::BindToTree", count: 408 }
2: Object { name: "RefreshDriverVsyncObserver::NotifyVsyncTimerOnMainThread", count: 192 }
3: Object { name: "DelayedFireDOMPaintEvent", count: 125 }
4: Object { name: "PWindowGlobal::Msg_RawMessage", count: 124 }
5: Object { name: "FocusBlurEvent", count: 111 }
6: Object { name: "PCompositorBridge::Msg_DidComposite", count: 101 }
7: Object { name: "PWindowGlobal::Msg_SetSingleChannelId", count: 68 }
8: Object { name: "CommandDispatcher", count: 67 }
9: Object { name: "PWindowGlobal::Msg_UpdateBFCacheStatus", count: 55 }
10: Object { name: "ProgressTracker::AsyncNotifyRunnable", count: 52 }
11: Object { name: "FocusInOutEvent", count: 51 }
12: Object { name: "PContent::Msg_CommitWindowContextTransaction", count: 45 }
13: Object { name: "RefreshDriver::EnsureTimerStarted::catch-up", count: 43 }
14: Object { name: "MozPromise::ThenValueBase::ResolveOrRejectRunnable", count: 42 }
15: Object { name: "JSActor Async Message", count: 40 }
16: Object { name: "LocalizationRc::format_messages", count: 29 }
17: Object { name: "LayerActivityTracker", count: 24 }
18: Object { name: "Element::NotifyUAWidgetTeardownAndUnattachShadow::UAWidgetTeardown", count: 24 }
19: Object { name: "Element::NotifyUAWidgetSetupOrChange::UAWidgetSetupOrChange", count: 24 }
20: Object { name: "LogMessageRunnable", count: 24 }
Updated•1 year ago
|
Assignee | ||
Updated•1 year ago
|
Comment 26•1 year ago
|
||
Comment 27•1 year ago
|
||
bugherder |
Updated•1 year ago
|
Assignee | ||
Comment 28•1 year ago
|
||
Original Revision: https://phabricator.services.mozilla.com/D213455
Updated•1 year ago
|
Comment 29•1 year ago
|
||
beta Uplift Approval Request
- User impact if declined: A reusable browser chrome widget accumulates nodes over time. In some cases (media capture permission prompt) they are never cleaned up. Performance impact over time is unclear but when exacerbated by MOZ_CHAOSMODE it quickly has an impact. I'd assume there is some impact on long-running browser sessions.
- Code covered by automated testing: yes
- Fix verified in Nightly: no
- Needs manual QE test: no
- Steps to reproduce for manual QE testing: N/A
- Risk associated with taking this patch: Low
- Explanation of risk level: No functional changes, just an extra cleanup step when the widget gets hidden.
- String changes made/needed: None
- Is Android affected?: no
Updated•1 year ago
|
Comment 30•1 year ago
|
||
uplift |
Updated•1 year ago
|
Description
•