Closed Bug 1480702 Opened 2 years ago Closed 2 years ago

Intermittent dom/tests/mochitest/fetch/test_request.html | ServiceWorker: worker failed to import test_request.js; error: Failed to load worker script at test_request.js (nsresult = 0x8053000b)

Categories

(Core :: DOM: Service Workers, defect, P2)

defect

Tracking

()

RESOLVED FIXED
mozilla63
Tracking Status
firefox63 --- fixed

People

(Reporter: intermittent-bug-filer, Assigned: ytausky)

References

Details

(Keywords: intermittent-failure, Whiteboard: [stockwell unknown])

Attachments

(1 file)

Filed by: ncsoregi [at] mozilla.com

https://treeherder.mozilla.org/logviewer.html#?job_id=191804215&repo=autoland

https://queue.taskcluster.net/v1/task/W7_3ONw0Sk-ghhLe8HZQZg/runs/0/artifacts/public/logs/live_backing.log

[task 2018-08-03T07:31:05.850Z] 07:31:05     INFO - TEST-PASS | dom/tests/mochitest/fetch/test_request.html | NestedWorker: 
[task 2018-08-03T07:31:05.851Z] 07:31:05     INFO - 
[task 2018-08-03T07:31:05.852Z] 07:31:05     INFO - 
[task 2018-08-03T07:31:05.853Z] 07:31:05     INFO - 
[task 2018-08-03T07:31:05.853Z] 07:31:05     INFO -  === 
[task 2018-08-03T07:31:05.854Z] 07:31:05     INFO - 
[task 2018-08-03T07:31:05.855Z] 07:31:05     INFO - 
[task 2018-08-03T07:31:05.856Z] 07:31:05     INFO - 
[task 2018-08-03T07:31:05.857Z] 07:31:05     INFO - : File contents should match. 
[task 2018-08-03T07:31:05.859Z] 07:31:05     INFO - TEST-PASS | dom/tests/mochitest/fetch/test_request.html | NestedWorker: true === true: Passing a Request to another Request should set the former as used 
[task 2018-08-03T07:31:05.860Z] 07:31:05     INFO - TEST-PASS | dom/tests/mochitest/fetch/test_request.html | NestedWorker: true: Invalid mimetype should fail. 
[task 2018-08-03T07:31:05.860Z] 07:31:05     INFO - TEST-PASS | dom/tests/mochitest/fetch/test_request.html | NestedWorker: true: Used Request cannot be passed to new Request 
[task 2018-08-03T07:31:05.861Z] 07:31:05     INFO - Buffered messages finished
[task 2018-08-03T07:31:05.862Z] 07:31:05     INFO - TEST-UNEXPECTED-FAIL | dom/tests/mochitest/fetch/test_request.html | ServiceWorker: worker failed to import test_request.js; error: Failed to load worker script at test_request.js (nsresult = 0x8053000b) 
[task 2018-08-03T07:31:05.863Z] 07:31:05     INFO -     onMessage@dom/tests/mochitest/fetch/fetch_test_framework.js:93:13
[task 2018-08-03T07:31:05.864Z] 07:31:05     INFO -     EventListener.handleEvent*setupSW@dom/tests/mochitest/fetch/fetch_test_framework.js:82:9
[task 2018-08-03T07:31:05.866Z] 07:31:05     INFO - GECKO(1724) | ###!!! [Parent][DispatchAsyncMessage] Error: PClientSourceOp::Msg___delete__ Route error: message sent to unknown actor ID
[task 2018-08-03T07:31:05.867Z] 07:31:05     INFO - GECKO(1724) | MEMORY STAT | vsize 20973587MB | residentFast 894MB
[task 2018-08-03T07:31:05.868Z] 07:31:05     INFO - TEST-OK | dom/tests/mochitest/fetch/test_request.html | took 1398ms
Hmm, if I added another test for bug 1482017, it causes this bug again.
https://treeherder.mozilla.org/#/jobs?repo=try&revision=03f15cc6573cbfac2d9642476e110176b25e7710

I'll land them with disabling the new tests only debug builds on Android, but this is really annoying to me, as module owner of editor. While I was writing the patches, I didn't reproduce this orange. So, this is a new regression, we should fix this.
It seems that adding any new mochitest-plain test into editor/libeditor/tests causes this permanent failure of the test:
https://treeherder.mozilla.org/#/jobs?repo=try&revision=b692195dff46655bcaadef26abbad4795d8ca5fd

So, I don't think that we should keep enabling this test for debug build on Android since editor developers cannot add tests only for this test...

I'd like to ask somebody who wrote/hacked the test. Do you have any idea for this orange? Do you agree with disabling this test?
Flags: needinfo?(nsm.nikhil)
Flags: needinfo?(ehsan)
Flags: needinfo?(ben)
I realized that, oddly, when the mochitest-36 is either orange or green, no editor tests are run. Why adding new tests into editor causes the orange???
https://taskcluster-artifacts.net/FgVE2GLOQ8iuRbOZRyLKkQ/0/public/logs/live_backing.log
https://taskcluster-artifacts.net/JXFEyqZLS2K7M1_y0yhoHw/0/public/logs/live_backing.log
I don't think this failure has anything to do with the test you've added, since as you note it is not running in the test job, and there is no evidence to suggest that either your test or your code change are the cause here.  To the contrary, if you look at the logcat, the error that causes the test failure is actually clearly logged:

08-15 00:40:35.816   809   838 I Gecko   : [809, Main Thread] WARNING: '!window', file /builds/worker/workspace/build/src/dom/cache/CacheStorage.cpp, line 596
08-15 00:40:35.886   809   838 I Gecko   : [809, Main Thread] WARNING: '!window', file /builds/worker/workspace/build/src/dom/cache/CacheStorage.cpp, line 596
08-15 00:40:37.017   809   838 I Gecko   : [809, Main Thread] WARNING: '!window', file /builds/worker/workspace/build/src/dom/cache/CacheStorage.cpp, line 596
08-15 00:40:37.177   809   838 I Gecko   : [809, Main Thread] WARNING: '!window', file /builds/worker/workspace/build/src/dom/cache/CacheStorage.cpp, line 596
08-15 00:40:37.207   809   838 I Gecko   : [809, Main Thread] WARNING: 'mIsWorkerScript || (mState != ServiceWorkerState::Parsed && mState != ServiceWorkerState::Installing)', file /builds/worker/workspace/build/src/dom/workers/ScriptLoader.cpp, line 1765
08-15 00:40:37.307   809   838 E GeckoConsole: [JavaScript Error: "Service worker event waitUntil() was passed a promise that rejected with 'TypeError: completeInstall is not a function'."]
08-15 00:40:37.477   809   838 I GeckoDump: ⰲ겿{"action":"test_status","time":1534318837465,"thread":null,"pid":null,"source":"mochitest","test":"/tests/dom/tests/mochitest/fetch/test_request.html","subtest":"ServiceWorker: worker failed to import test_request.js; error: Failed to load worker script at test_request.js (nsresult = 0x8053000b)","status":"FAIL","expected":"PASS","stack":"    onMessage@dom/tests/mochitest/fetch/fetch_test_framework.js:93:13\n","js_source":"TestRunner.js"}ⰲ겿

Clearing the needinfo for people who don't work at the company any longer and myself who doesn't work on service workers any more.  Needinfoing Marion who managers the workers and storage team now to help find an owner.
Flags: needinfo?(nsm.nikhil)
Flags: needinfo?(mdaly)
Flags: needinfo?(ehsan)
Flags: needinfo?(ben)
asuth: this may be a good project for Yaron
Flags: needinfo?(mdaly) → needinfo?(bugmail)
Component: DOM → DOM: Service Workers
Priority: -- → P3
I got the changeset which becomes adding a new test into editor/libeditor/tests causes the test orange.
That is: https://hg.mozilla.org/try/rev/8b97d3b93472
https://treeherder.mozilla.org/#/jobs?repo=try&revision=88d8403ffb9a90ca63c73465486ccd2c0843e025

Before this changeset, adding new test does not cause the orange:
https://treeherder.mozilla.org/#/jobs?repo=try&revision=7f96655f130827a18b3b7479c67906b788d371d7
Assignee: nobody → ytausky
Status: NEW → ASSIGNED
Flags: needinfo?(bugmail)
Priority: P3 → P2
(In reply to Masayuki Nakano [:masayuki] (JST, +0900) from comment #8)
> I got the changeset which becomes adding a new test into
> editor/libeditor/tests causes the test orange.
> That is: https://hg.mozilla.org/try/rev/8b97d3b93472
> https://treeherder.mozilla.org/#/
> jobs?repo=try&revision=88d8403ffb9a90ca63c73465486ccd2c0843e025
> 
> Before this changeset, adding new test does not cause the orange:
> https://treeherder.mozilla.org/#/
> jobs?repo=try&revision=7f96655f130827a18b3b7479c67906b788d371d7

Hmm, so basically after bug 1070763?  Interesting!
After analyzing test_request.html it became clear that it relied on two false
assumptions:
1. It assumed that a service worker is notified that it's being installed before
   any client can interact with it.
2. It assumed that a service worker will always be installed upon registration,
   if it was unregistered before.
The first assumption is not backed by the spec; it seems that the opposite behavior
is the correct one (https://github.com/w3c/ServiceWorker/issues/1347). The second
assumption ignores the possibility of resurrection, where a service worker is re-
registered before getting uninstalled.

This commit addresses both problems by not relying on the installation phase,
instead passing the script URL as a search parameter and loading it at service
worker script evaluation time. It then runs the test function in response to a
message from the client.
Keywords: leave-open
Comment on attachment 9002746 [details]
Bug 1480702: Rewrite test to avoid relying on unspecified/erroneous behavior

Andrew Sutherland [:asuth] has approved the revision.
Attachment #9002746 - Flags: review+
Pushed by bugmail@asutherland.org:
https://hg.mozilla.org/integration/autoland/rev/ce2f6b168f04
Rewrite test to avoid relying on unspecified/erroneous behavior r=asuth
@masayuki, I'm not sure I understand the link you posted. The failures there seem to be unrelated to this bug. Is there something connecting them to it?
It was automatically posted by bzpost since the summary of my changeset includes the number of this bug. Sorry for the confusion.
No problem, thanks for clarifying.
BTW, looks like that this bug has been fixed completely. Why is this bug still open?
Flags: needinfo?(ytausky)
The leave-open keyword.  :-)
I just wanted to wait a bit to make sure it really stops failing. Since it's been quite for twice the the time between failures before the patch, I guess it's safe to mark it as resolved.
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Flags: needinfo?(ytausky)
Keywords: leave-open
Resolution: --- → FIXED
Target Milestone: --- → mozilla63
You need to log in before you can comment on or make changes to this bug.