Intermittent layout/base/tests/chrome/test_color_scheme_browser.xhtml | AbortError: Actor 'SpecialPowers' destroyed before query 'Spawn' was resolved - Should not throw any errors
Categories
(Core :: Layout, defect, P5)
Tracking
()
Tracking | Status | |
---|---|---|
firefox-esr91 | --- | unaffected |
firefox99 | --- | unaffected |
firefox100 | --- | unaffected |
firefox101 | --- | fixed |
People
(Reporter: intermittent-bug-filer, Assigned: emilio)
References
(Regression)
Details
(Keywords: intermittent-failure, regression)
Attachments
(1 file)
Filed by: mlaza [at] mozilla.com
Parsed log: https://treeherder.mozilla.org/logviewer?job_id=373328635&repo=autoland
Full log: https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/SJmGhrG0S_u3guQG7bn8mA/runs/0/artifacts/public/logs/live_backing.log
task 2022-04-04T19:56:03.544Z] 19:56:03 INFO - Buffered messages finished
[task 2022-04-04T19:56:03.545Z] 19:56:03 INFO - TEST-UNEXPECTED-FAIL | layout/base/tests/chrome/test_color_scheme_browser.xhtml | AbortError: Actor 'SpecialPowers' destroyed before query 'Spawn' was resolved - Should not throw any errors
[task 2022-04-04T19:56:03.545Z] 19:56:03 INFO - add_task/nextTick/<@chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:2103:26
[task 2022-04-04T19:56:03.545Z] 19:56:03 INFO - GECKO(5204) | [Child 9184, Main Thread] WARNING: '!CanSend() || !mManager || !mManager->CanSend()', file /builds/worker/checkouts/gecko/dom/ipc/jsactor/JSWindowActorChild.cpp:44
[task 2022-04-04T19:56:03.546Z] 19:56:03 INFO - GECKO(5204) | MEMORY STAT | vsize 2120972MB | vsizeMaxContiguous 65606854MB | residentFast 469MB | heapAllocated 208MB
[task 2022-04-04T19:56:03.546Z] 19:56:03 INFO - GECKO(5204) | [Parent 4592, Main Thread] WARNING: early callback, or time went backwards: '!aAllowIdleDispatch', file /builds/worker/checkouts/gecko/xpcom/threads/IdleTaskRunner.cpp:197
[task 2022-04-04T19:56:03.547Z] 19:56:03 INFO - TEST-OK | layout/base/tests/chrome/test_color_scheme_browser.xhtml | took 290ms
Comment 1•2 years ago
|
||
It's a high freq failure, Emilio can you please take a look?
Comment hidden (Intermittent Failures Robot) |
Assignee | ||
Updated•2 years ago
|
Assignee | ||
Comment 3•2 years ago
|
||
Nika, it seems like remote browser elements don't block the load event, is that intentional?
Updated•2 years ago
|
Assignee | ||
Comment 4•2 years ago
|
||
Remote browsers don't block onload otherwise, so we could spawn a task
to the initial about:blank, and getting that replaced by the real load
before the task executed.
Assignee | ||
Comment 5•2 years ago
|
||
Maybe there's a better way than watching nsIWPL. Probably it should block the load event the same way fission iframes or non-remote browsers do, but I'll send a patch waiting for now.
Assignee | ||
Comment 6•2 years ago
|
||
Gijs, my patch is hitting a lint issue about:
Do not use add_task() for setup, use add_setup() instead.
But add_setup()
is not defined in mochitest-chrome
, apparently. I can workaround it by renaming the function, but maybe the lint needs to be tweaked? Or add_setup
should become available to mochitest-chrome
perhaps?
Pushed by ealvarez@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/542bff487bbf Manually wait for remote browser load in test_color_scheme_browser.xhtml. r=nika
Comment 8•2 years ago
|
||
(In reply to Emilio Cobos Álvarez (:emilio) from comment #6)
Gijs, my patch is hitting a lint issue about:
Do not use add_task() for setup, use add_setup() instead.
But
add_setup()
is not defined inmochitest-chrome
, apparently.
Nor in mochitest-plain. mochitest-chrome
and plain
have their own add_task
implementation, and would need their own add_setup
implementation. After the browser mochitest ones, I already did the work for xpcshell implementation in bug 1757040 (for which the same is true). I'd be happy to help review something for mochitest-plain/chrome, but when I asked about mochitest-plain in #developers a while ago, the suggestion was that few tests get created these days and few use add_task
at all, so it was bottom of my priority pile.
I can workaround it by renaming the function, but maybe the lint needs to be tweaked?
The lint is only applied to the browser mochitest environment. It sounds like the linter thinks this chrome test is a browser mochitest. This normally happens because multiple test flavours share the same directory.
In this case, it looks like the test is in layout/base/tests/chrome/
, so I don't know why it's getting the browser mochitest environment at all. Mark - maybe https://searchfox.org/mozilla-central/rev/fbb1e8462ad82b0e76b5c13dd0d6280cfb69e68d/layout/base/tests/.eslintrc.js#3-5 needs fixing? Looks like there are browser tests directly in that directory, but of course not in the chrome
subdirectory. I don't know how best to represent that in an .eslintrc file - can we override the env in the subdir entirely, instead of extending the existing env?
Comment 9•2 years ago
|
||
(In reply to :Gijs (he/him) from comment #8)
In this case, it looks like the test is in
layout/base/tests/chrome/
, so I don't know why it's getting the browser mochitest environment at all. Mark - maybe https://searchfox.org/mozilla-central/rev/fbb1e8462ad82b0e76b5c13dd0d6280cfb69e68d/layout/base/tests/.eslintrc.js#3-5 needs fixing? Looks like there are browser tests directly in that directory, but of course not in thechrome
subdirectory. I don't know how best to represent that in an .eslintrc file - can we override the env in the subdir entirely, instead of extending the existing env?
The problem is the mixture of test types in layout/base/tests/
, that top directory has both browser.ini
and mochitest.ini
. As a result it needs to know about both environments via the .eslintrc.js
file. We do have bug 1379669 for potentially changing how we apply the ESLint environments so that different test types could nicely sit in the same directory, but I have never got around to investigating how much of a performance hit that might be (or how complex).
I think the simplest solution here for our current situation would be to move the two types of tests into separate sub-directories. The only other option would be to only apply the environments to the particular files in the directory, but that feels like it would be harder for maintenance.
Comment 10•2 years ago
|
||
(In reply to Mark Banner (:standard8) from comment #9)
(In reply to :Gijs (he/him) from comment #8)
In this case, it looks like the test is in
layout/base/tests/chrome/
, so I don't know why it's getting the browser mochitest environment at all. Mark - maybe https://searchfox.org/mozilla-central/rev/fbb1e8462ad82b0e76b5c13dd0d6280cfb69e68d/layout/base/tests/.eslintrc.js#3-5 needs fixing? Looks like there are browser tests directly in that directory, but of course not in thechrome
subdirectory. I don't know how best to represent that in an .eslintrc file - can we override the env in the subdir entirely, instead of extending the existing env?The problem is the mixture of test types in
layout/base/tests/
, that top directory has bothbrowser.ini
andmochitest.ini
. As a result it needs to know about both environments via the.eslintrc.js
file. We do have bug 1379669 for potentially changing how we apply the ESLint environments so that different test types could nicely sit in the same directory, but I have never got around to investigating how much of a performance hit that might be (or how complex).I think the simplest solution here for our current situation would be to move the two types of tests into separate sub-directories. The only other option would be to only apply the environments to the particular files in the directory, but that feels like it would be harder for maintenance.
I'm sorry but I'm confused. The "offending" tests are not in layout/base/tests/
, they are in layout/base/tests/chrome/
. Can we add a new .eslintrc.js
there that doesn't include the browser-test environment at all, overriding the existing .eslintrc.js
file that is in layout/base/tests/
? That wouldn't fix the existing issue inside layout/base/tests/
itself, but would help for the tests that are already in the chrome/
subdir, right?
Comment 11•2 years ago
|
||
Set release status flags based on info from the regressing bug 1762298
Comment 12•2 years ago
|
||
bugherder |
Comment hidden (Intermittent Failures Robot) |
Comment 14•2 years ago
|
||
(In reply to :Gijs (he/him) from comment #10)
I'm sorry but I'm confused. The "offending" tests are not in
layout/base/tests/
, they are inlayout/base/tests/chrome/
. Can we add a new.eslintrc.js
there that doesn't include the browser-test environment at all, overriding the existing.eslintrc.js
file that is inlayout/base/tests/
? That wouldn't fix the existing issue insidelayout/base/tests/
itself, but would help for the tests that are already in thechrome/
subdir, right?
From an ESLint perspective, browser-test
etc are configurations rather than environments - as well as setting environment variables, we also turn on/off various rules specific for those tests.
So when layout/base/tests/.eslintrc.js
extends from the browser-test
configuration, then that configuration applies to all the subdirectories of layout/base/tests
. If there's another .eslintrc.js
in the sub-tree, then it builds on top of the parent configurations rather than replacing them.
Unlike environments, we can't turn off configurations except for manually disabling all the rules etc.
Comment 15•2 years ago
|
||
(In reply to Mark Banner (:standard8) from comment #14)
Unlike environments, we can't turn off configurations except for manually disabling all the rules etc.
Just had a thought, one option might be to set "mozilla/no-addtask-setup": "off",
in chrome-test
and mochitest-test
. That would fix it for situations like this, though it would be ambiguous for if it was turned on or not in directories like layout/base/test
where we have both mochitest-test
and browser-test
. I suspect the browser-test
version would win in this case and turn it on, as that's listed second.
Comment hidden (Intermittent Failures Robot) |
Updated•2 years ago
|
Description
•