Closed Bug 1231213 Opened 9 years ago Closed 5 years ago

Refactor ServiceWorkerPrivate to spawn and hold open WorkerPrivate instances in content processes, dispatching events to them

Categories

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

defect

Tracking

()

RESOLVED FIXED
mozilla70
Fission Milestone M5
Tracking Status
firefox70 --- fixed

People

(Reporter: bkelly, Assigned: perry)

References

(Blocks 2 open bugs)

Details

(Whiteboard: [e10s-multi:M3], SW-MUST, DWS_NEXT[wptsync upstream])

Attachments

(24 files, 1 obsolete file)

(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
(deleted), text/x-phabricator-request
Details
The service worker manager needs to be able to spawn a new content process and hold it open. This means implementing something like the TabChild, but specific to workers. This should be PContent-based.
Blocks: 667501
Assignee: nobody → bugmail
Status: NEW → ASSIGNED
Whiteboard: [e10s-multi:M1]
Whiteboard: [e10s-multi:M1] → [e10s-multi:M3]
I'm folding bug 1231216 into this one, updating this title. (Thanks to changes to support sandboxed file-processes and large-allocation processes, there is no longer any logically separate infrastructure work for this. Also, we determined ServiceWorkerPrivate as the split-point for remoting. What to do was previously more nebulous.)
Summary: allow service worker manager to spawn and hold open a content process → Refactor ServiceWorkerPrivate to spawn and hold open WorkerPrivate instances in content processes, dispatching events to them
Priority: -- → P3
Whiteboard: [e10s-multi:M3] → [e10s-multi:M3], SW-MUST
Priority: P3 → P2
Whiteboard: [e10s-multi:M3], SW-MUST → [e10s-multi:M3], SW-MUST, DWS_NEXT
Blake, I think this may be a good bug for perry to do a deep dive in, thoughts? :Asuth, thoughts?
Flags: needinfo?(mrbkap)
Bug 1438945 adds the framework to do this. I'm working on getting it landed Real Soon Now (TM) (hopefully tomorrow or the next day). Once it's landed, we'll have to migrate ServiceWorkers over to using the RemoteWorker machinery introduced in that patchset, which will fix this bug.
Depends on: 1438945
Flags: needinfo?(mrbkap)
Assignee: bugmail → perry
I think that with separating ServiceWorkerPrivate and WorkerPrivate, it makes sense to also extract out all the ExtendableEvent-related runnables from the ServiceWorkerPrivate files. I tested that out, leading to the problem described in bug 1509135, so I'm marking that bug as blocking this one.

This is the current, and hopefully final, strategy:

New IPDL Protocols

PRemoteWorkerController

The Remote Worker infrastructure operates over PBackground, with the parent-process-side endpoint being RemoteWorkerController and the child-process-side endpoint being RemoteWorkerChild. To integrate ServiceWorkerPrivate into this system, it needs to access a RemoteWorkerController. This will happen over the PRemoteWorkerController protocol, which connects the main thread and background thread in the parent process.

PFetchEventOp

PFetchEventOp is a PBackground-managed protocol. A PFetchEventOp actor represents an in-progress Fetch event. i.e., the lifetime of an actor corresponds to the lifetime of a FetchEvent (more or less). There will be two pairs of actors implementing PFetchEventOp{Parent,Child}; one to link the main/background threads in the main process, and one to link the background thread in the main process to the Worker Launcher thread in the content process (where RemoteWorkerChild lives). Commands/queries/operations from the content process can’t directly access the parent-process main thread due to the Remote Worker infrastructure existing exclusively over PBackground, so the second pair of actors is needed to act as a proxy for the first pair of actors.

The child actor from the first pair will keep a reference to a KeepAliveToken as well as an nsIInterceptedChannel and can manipulate the intercepted channel on behalf of the content process. It should be able to synthesize a response from an InternalResponse, avoiding the need to use the channel abstraction.

ServiceWorkerOpArgs (not a protocol, but still IPC related)

ServiceWorkerOpArgs is an IPDL union of all possible service worker “operations” (e.g. ServiceWorkerFetchEventOpArgs, ServiceWorkerMessageEventOpArgs, etc.). Everything necessary to construct a service worker event/runnable is packaged into a struct and sent through the various protocols and to the content process as a ServiceWorkerOpArgs union. RemoteWorkerChild will ultimately determine what specific operation is received and handle is accordingly.

ServiceWorkerOpResult

ServiceWorkerOpResult is similar to ServiceWorkerOpArgs; it’s used to communicate the result of an operation (and any necessary callback arguments) across IPC.

Determining when an operation is complete

For those operations that only have one dispatch/response cycle (which is looking like everything but Fetch), the lifetime of the operation corresponds to the lifetime of the MozPromise returned by PRemoteWorkerControllerChild::SendExecServiceWorkerOp (called by ServiceWorkerPrivate). This promise is then resolved or rejected by the MozPromise returned by PRemoteWorkerParent::SendExecServiceWorkerOp (called by RemoteWorkerController).

For Fetch, this is determined by the FetchEventOp actors’ lifetimes rather than a MozPromises’ lifetimes, in a similar fashion.

Summary

Service worker operations are encapsulated by a ServiceWorkerOpArgs object that can be sent across IPC. The path of a ServiceWorkerOpArgs object is ServiceWorkerPrivate -> RemoteWorkerControllerChild -> RemoteWorkerControllerParent -> RemoteWorkerController -> RemoteWorkerParent -> RemoteWorkerChild -> WorkerPrivate. There are many objects to pass through due to this whole process happening over 3 threads.

When a non-fetch operation completes in the content process, the steps for telling the parent process that the operation has completed is as follow:

  1. Create a ServiceWorkerOpResult that’s used to call a PRemoteWorkerChild::ExecServiceWorkerOpResolver
  2. That call will then resolve the promise returned from PRemoteWorkerParent::SendExecServiceWorkerOp, whose resolution then calls PRemoteWorkerControllerParent::ExecServiceWorkerOpResolver
  3. That call them will resolve the promise returned from PRemoteWorkerControllerChild::SendExecServiceWorkerOp, where callbacks, if any, can then be called.
  4. The operation is complete, and its associated KeepAliveToken is destroyed.

Steps for a Fetch operation are similar but use FetchEventOp actor destruction rather than MozPromise resolution/rejection.

Your most excellent summary matches my understanding of our discussion. Thanks!

The args are sent from the parent process main thread to the parent process
background thread and then from the background thread to a content process
worker launcher thread.

Depends on D26172

Attached file Bug 1231213 - Various changes to existing tests. r?asuth (obsolete) (deleted) —

Depends on D26179

Parent-intercept tests: https://treeherder.mozilla.org/#/jobs?repo=try&revision=2eccbd522310ece1d30818050f4bd974c2943610
"Normal" tests: https://treeherder.mozilla.org/#/jobs?repo=try&revision=50f15dff40201f4beb2a5f505bc47e866b371413

There's still intermittent timeouts in WPTs for the parent-intercept tests (although none for service-workers/ tests). Based on the log output of those tests, I suspect they're caused by the Service Workers being spawn in a dying/about-to-die process, causing the worker to never execute and the tests to timeout. The cause perhaps involves code here https://searchfox.org/mozilla-central/source/dom/ipc/ContentParent.cpp#5796, but rr isn't cooperating and I'm having trouble verifying. (Also Pernosco has not been able to reproduce the timeouts.)

The timeouts are no more, and I've updated the patches with the fix (see revision D26176).

Tests (parent-intercept tests are in the Linux x64 debug section): https://treeherder.mozilla.org/#/jobs?repo=try&revision=970e603225f31cbf45ca5341c64814ac274fc95d (rebased on central on May 10 2019)

Attachment #9055888 - Attachment description: Bug 1231213 - Don't spawn Service Workers in Web Extensions processes. r?asuth → Bug 1231213 - Only spawn Service Workers in non-web-extensions processes that won't imminently shutdown. r?asuth
No longer blocks: 1506892
Attachment #9055892 - Attachment is obsolete: true
Fission Milestone: --- → M5

Truly fantastic work on this entire patch set. The future looks very bright for ServiceWorkers in Gecko!

  • Throw a TypeError when a registration isn't found in the "scope to registration map"
  • Synchronously (before enqueuing a job) check for an existing newest worker
  • Synchronously check if an installing worker is attempting to update itself

Depends on D26178

Pushed by pjiang@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/e41b984510ad Properly declare some dependencies so everything will compile with additional files. r=asuth https://hg.mozilla.org/integration/autoland/rev/ca4e828345a2 Correctly choose nsBufferedStream's underlying nsIInputStream after initialization. r=asuth https://hg.mozilla.org/integration/autoland/rev/280271806864 Support IPCStreamSource on the Worker Launcher thread. r=asuth https://hg.mozilla.org/integration/autoland/rev/71d93fc98d3f IPCStreamSource should not attempt to read from its stream if already closed. r=asuth https://hg.mozilla.org/integration/autoland/rev/f2af7b66f50d Avoid some assertions for ServiceWorkerManagers in child processes. r=asuth https://hg.mozilla.org/integration/autoland/rev/fd146f327f2d Implement IPCInternal{Request,Response}. r=asuth https://hg.mozilla.org/integration/autoland/rev/12e04c22f52f Implement ServiceWorkerOp{Args,Promise,Result}, FetchEventRespondWith{Promise,Result}, and IPCFetchEventRespondWithResult. r=asuth https://hg.mozilla.org/integration/autoland/rev/be6031a6fca7 Implement ServiceWorkerShutdownBlocker. r=asuth https://hg.mozilla.org/integration/autoland/rev/4b588dec466b Have ServiceWorkerManager block shutdown on "profile-change-teardown" when in the parent process with parent intercept enabled. r=asuth https://hg.mozilla.org/integration/autoland/rev/196ee18781cb Add OptionalServiceWorkerData to RemoteWorkerData. r=asuth https://hg.mozilla.org/integration/autoland/rev/bc0607e0d50b Implement PRemoteWorkerController IPDL protocol and RemoteWorkerController{Parent,Child}. r=asuth https://hg.mozilla.org/integration/autoland/rev/9042ea694d40 Refactor RemoteWorkerController to handle Service Workers' and Shared Workers' operations. r=asuth https://hg.mozilla.org/integration/autoland/rev/d61b9d65bd0a Refactor RemoteWorkerChild to handle Service Workers' and Shared Workers' operations and to make its state data/transitions safer. r=asuth https://hg.mozilla.org/integration/autoland/rev/670e7d61d95c Implement PFetchEventOp(Proxy) IPDL protocols and FetchEventOp(Proxy){Parent,Child}. r=asuth https://hg.mozilla.org/integration/autoland/rev/0528ab68d94e Implement ServiceWorkerOp and its subclasses. r=asuth https://hg.mozilla.org/integration/autoland/rev/039c34bc043c Let ServiceWorkerOpArgs be sent from the parent process to a content process. r=asuth https://hg.mozilla.org/integration/autoland/rev/4e8369314e87 Implement ServiceWorkerPrivateImpl to dispatch operations to content processes and respond to their results. r=asuth https://hg.mozilla.org/integration/autoland/rev/87575a180ad5 Implement cross-process ServiceWorkerGlobalScope.skipWaiting(). r=asuth https://hg.mozilla.org/integration/autoland/rev/eb7f3a9b0a42 Only spawn Service Workers in non-web-extensions processes that won't imminently shutdown. r=asuth https://hg.mozilla.org/integration/autoland/rev/a78d7b3e44af Make ServiceWorkerPrivate use ServiceWorkerPrivateImpl when parent-intercept is enabled. r=asuth https://hg.mozilla.org/integration/autoland/rev/5e88c3855fb6 Allow the delayed ServiceWorkerRegistration.update() mechanism to handle multiple simultaneous requests without timing out. r=asuth https://hg.mozilla.org/integration/autoland/rev/6f25a7e73fe2 Update the update algorithm to better match the spec r=asuth
Created web-platform-tests PR https://github.com/web-platform-tests/wpt/pull/18398 for changes under testing/web-platform/tests
Whiteboard: [e10s-multi:M3], SW-MUST, DWS_NEXT → [e10s-multi:M3], SW-MUST, DWS_NEXT[wptsync upstream]
Pushed by pjiang@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/5ccc1b5c3c28 Temporarily disable devtools tests for Service Workers e10s. r=asuth https://hg.mozilla.org/integration/autoland/rev/9e1c0cef85bd Various changes to existing tests. r=asuth
Upstream web-platform-tests status checks passed, PR will merge once commit reaches central.
Upstream PR was closed without merging
Pushed by pjiang@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/30b9a65a6294 Properly declare some dependencies so everything will compile with additional files. r=asuth https://hg.mozilla.org/integration/autoland/rev/89fffd7b8740 Correctly choose nsBufferedStream's underlying nsIInputStream after initialization. r=asuth https://hg.mozilla.org/integration/autoland/rev/afc3b2b9d472 Support IPCStreamSource on the Worker Launcher thread. r=asuth https://hg.mozilla.org/integration/autoland/rev/0591a2a0cc41 IPCStreamSource should not attempt to read from its stream if already closed. r=asuth https://hg.mozilla.org/integration/autoland/rev/dac29b0340ce Avoid some assertions for ServiceWorkerManagers in child processes. r=asuth https://hg.mozilla.org/integration/autoland/rev/3bbea49c6d03 Implement IPCInternal{Request,Response}. r=asuth https://hg.mozilla.org/integration/autoland/rev/d99f2cbe0ed2 Implement ServiceWorkerOp{Args,Promise,Result}, FetchEventRespondWith{Promise,Result}, and IPCFetchEventRespondWithResult. r=asuth https://hg.mozilla.org/integration/autoland/rev/d4ffae32539b Implement ServiceWorkerShutdownBlocker. r=asuth https://hg.mozilla.org/integration/autoland/rev/6e2934410f95 Have ServiceWorkerManager block shutdown on "profile-change-teardown" when in the parent process with parent intercept enabled. r=asuth https://hg.mozilla.org/integration/autoland/rev/a1dcf2ea83be Add OptionalServiceWorkerData to RemoteWorkerData. r=asuth https://hg.mozilla.org/integration/autoland/rev/b96a12cd2c73 Implement PRemoteWorkerController IPDL protocol and RemoteWorkerController{Parent,Child}. r=asuth https://hg.mozilla.org/integration/autoland/rev/c8c1d3aa27c6 Refactor RemoteWorkerController to handle Service Workers' and Shared Workers' operations. r=asuth https://hg.mozilla.org/integration/autoland/rev/06281fe76994 Refactor RemoteWorkerChild to handle Service Workers' and Shared Workers' operations and to make its state data/transitions safer. r=asuth https://hg.mozilla.org/integration/autoland/rev/822ade495b97 Implement PFetchEventOp(Proxy) IPDL protocols and FetchEventOp(Proxy){Parent,Child}. r=asuth https://hg.mozilla.org/integration/autoland/rev/df97ea0bbe79 Implement ServiceWorkerOp and its subclasses. r=asuth https://hg.mozilla.org/integration/autoland/rev/e52869704d4d Let ServiceWorkerOpArgs be sent from the parent process to a content process. r=asuth https://hg.mozilla.org/integration/autoland/rev/783bd2856798 Implement ServiceWorkerPrivateImpl to dispatch operations to content processes and respond to their results. r=asuth https://hg.mozilla.org/integration/autoland/rev/bdeff3d76292 Implement cross-process ServiceWorkerGlobalScope.skipWaiting(). r=asuth https://hg.mozilla.org/integration/autoland/rev/8cb30e5ef8d7 Only spawn Service Workers in non-web-extensions processes that won't imminently shutdown. r=asuth https://hg.mozilla.org/integration/autoland/rev/be99adfb84ab Make ServiceWorkerPrivate use ServiceWorkerPrivateImpl when parent-intercept is enabled. r=asuth https://hg.mozilla.org/integration/autoland/rev/20b1ec70a6d0 Allow the delayed ServiceWorkerRegistration.update() mechanism to handle multiple simultaneous requests without timing out. r=asuth https://hg.mozilla.org/integration/autoland/rev/06dba269fcfe Update the update algorithm to better match the spec r=asuth
Upstream web-platform-tests status checks passed, PR will merge once commit reaches central.

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&resultStatus=testfailed%2Cbusted%2Cexception&revision=06dba269fcfe94d7a5a0aed79f83ba6838364624&selectedJob=261383016

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

Backout link: https://hg.mozilla.org/integration/autoland/rev/b99210aefac1d57f42403e6eab8895a0cd3d325b

[task 2019-08-13T18:24:18.334Z] 18:24:18 INFO - /builds/worker/workspace/build/src/sccache/sccache /builds/worker/workspace/build/src/gcc/bin/g++ -o Unified_cpp_remoteworkers0.o -c -I/builds/worker/workspace/build/src/obj-firefox/dist/stl_wrappers -I/builds/worker/workspace/build/src/obj-firefox/dist/system_wrappers -include /builds/worker/workspace/build/src/config/gcc_hidden.h -DNDEBUG=1 -DTRIMMED=1 -DOS_POSIX=1 -DOS_LINUX=1 -DSTATIC_EXPORTABLE_JS_API -DMOZ_HAS_MOZGLUE -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -I/builds/worker/workspace/build/src/dom/workers/remoteworkers -I/builds/worker/workspace/build/src/obj-firefox/dom/workers/remoteworkers -I/builds/worker/workspace/build/src/dom/serviceworkers -I/builds/worker/workspace/build/src/xpcom/build -I/builds/worker/workspace/build/src/obj-firefox/ipc/ipdl/_ipdlheaders -I/builds/worker/workspace/build/src/ipc/chromium/src -I/builds/worker/workspace/build/src/ipc/glue -I/builds/worker/workspace/build/src/obj-firefox/dist/include -I/builds/worker/workspace/build/src/obj-firefox/dist/include/nspr -I/builds/worker/workspace/build/src/obj-firefox/dist/include/nss -fPIC -DMOZILLA_CLIENT -include /builds/worker/workspace/build/src/obj-firefox/mozilla-config.h -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -Wall -Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith -Wsign-compare -Wtype-limits -Wunreachable-code -Wwrite-strings -Wno-invalid-offsetof -Wduplicated-cond -Wno-error=maybe-uninitialized -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=coverage-mismatch -Wno-error=free-nonheap-object -Wformat -D_GLIBCXX_USE_CXX11_ABI=0 -fno-sized-deallocation -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-exceptions -fno-strict-aliasing -fno-rtti -ffunction-sections -fdata-sections -fno-exceptions -fno-math-errno -pthread -pipe -g -freorder-blocks -O2 -fno-omit-frame-pointer -funwind-tables -Werror -MD -MP -MF .deps/Unified_cpp_remoteworkers0.o.pp /builds/worker/workspace/build/src/obj-firefox/dom/workers/remoteworkers/Unified_cpp_remoteworkers0.cpp
[task 2019-08-13T18:24:18.334Z] 18:24:18 INFO - In file included from /builds/worker/workspace/build/src/obj-firefox/dom/workers/remoteworkers/Unified_cpp_remoteworkers0.cpp:2:0:
[task 2019-08-13T18:24:18.334Z] 18:24:18 ERROR - /builds/worker/workspace/build/src/dom/workers/remoteworkers/RemoteWorkerChild.cpp:211:26: error: 'mozilla::dom::RemoteWorkerChild::InitializeWorkerRunnable' has a field 'mozilla::dom::RemoteWorkerChild::InitializeWorkerRunnable::mActor' whose type uses the anonymous namespace [-Werror=subobject-linkage]
[task 2019-08-13T18:24:18.334Z] 18:24:18 INFO - class RemoteWorkerChild::InitializeWorkerRunnable final
[task 2019-08-13T18:24:18.334Z] 18:24:18 INFO - ^~~~~~~~~~~~~~~~~~~~~~~~
[task 2019-08-13T18:24:18.335Z] 18:24:18 INFO - /builds/worker/workspace/build/src/dom/workers/remoteworkers/RemoteWorkerChild.cpp: In member function 'virtual bool mozilla::dom::RemoteWorkerChild::SharedWorkerOp::MaybeStart(mozilla::dom::RemoteWorkerChild*, mozilla::dom::RemoteWorkerChild::State&)':
[task 2019-08-13T18:24:18.335Z] 18:24:18 ERROR - /builds/worker/workspace/build/src/dom/workers/remoteworkers/RemoteWorkerChild.cpp:804:68: error: 'mozilla::dom::RemoteWorkerChild::SharedWorkerOp::MaybeStart(mozilla::dom::RemoteWorkerChild*, mozilla::dom::RemoteWorkerChild::State&)::<lambda()>' has a field 'mozilla::dom::RemoteWorkerChild::SharedWorkerOp::MaybeStart(mozilla::dom::RemoteWorkerChild*, mozilla::dom::RemoteWorkerChild::State&)::<lambda()>::__owner' whose type uses the anonymous namespace [-Werror=subobject-linkage]
[task 2019-08-13T18:24:18.335Z] 18:24:18 INFO - func, self = std::move(self), owner = std::move(owner) mutable {
[task 2019-08-13T18:24:18.335Z] 18:24:18 INFO - ^
[task 2019-08-13T18:24:18.336Z] 18:24:18 INFO - In file included from /builds/worker/workspace/build/src/obj-firefox/dom/workers/remoteworkers/Unified_cpp_remoteworkers0.cpp:38:0:
[task 2019-08-13T18:24:18.338Z] 18:24:18 INFO - /builds/worker/workspace/build/src/dom/workers/remoteworkers/RemoteWorkerManager.cpp: In member function 'mozilla::dom::RemoteWorkerServiceParent* mozilla::dom::RemoteWorkerManager::SelectTargetActorForServiceWorker() const':
[task 2019-08-13T18:24:18.338Z] 18:24:18 ERROR - /builds/worker/workspace/build/src/dom/workers/remoteworkers/RemoteWorkerManager.cpp:238:7: error: operation on 'i' may be undefined [-Werror=sequence-point]
[task 2019-08-13T18:24:18.338Z] 18:24:18 INFO - i = (++i % mChildActors.Length());
[task 2019-08-13T18:24:18.338Z] 18:24:18 INFO - ^
[task 2019-08-13T18:24:18.338Z] 18:24:18 INFO - cc1plus: all warnings being treated as errors
[task 2019-08-13T18:24:18.338Z] 18:24:18 INFO - /builds/worker/workspace/build/src/config/rules.mk:787: recipe for target 'Unified_cpp_remoteworkers0.o' failed
[task 2019-08-13T18:24:18.338Z] 18:24:18 ERROR - make[4]: *** [Unified_cpp_remoteworkers0.o] Error 1
[task 2019-08-13T18:24:18.338Z] 18:24:18 INFO - make[4]: Leaving directory '/builds/worker/workspace/build/src/obj-firefox/dom/workers/remoteworkers'
[task 2019-08-13T18:24:18.338Z] 18:24:18 INFO - /builds/worker/workspace/build/src/config/recurse.mk:74: recipe for target 'dom/workers/remoteworkers/target' failed
[task 2019-08-13T18:24:18.338Z] 18:24:18 ERROR - make[3]: *** [dom/workers/remoteworkers/target] Error 2
[task 2019-08-13T18:24:18.338Z] 18:24:18 INFO - make[3]: *** Waiting for unfinished jobs....

Flags: needinfo?(perry)

My bad, I don't think I updated the Phabricator revisions...

Flags: needinfo?(perry)
Pushed by pjiang@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/9c845d7e3b29 Properly declare some dependencies so everything will compile with additional files. r=asuth https://hg.mozilla.org/integration/autoland/rev/97328368da02 Correctly choose nsBufferedStream's underlying nsIInputStream after initialization. r=asuth https://hg.mozilla.org/integration/autoland/rev/a84b262ff6f8 Support IPCStreamSource on the Worker Launcher thread. r=asuth https://hg.mozilla.org/integration/autoland/rev/778eade5085d IPCStreamSource should not attempt to read from its stream if already closed. r=asuth https://hg.mozilla.org/integration/autoland/rev/caede0e4e888 Avoid some assertions for ServiceWorkerManagers in child processes. r=asuth https://hg.mozilla.org/integration/autoland/rev/419f9bb7be3c Implement IPCInternal{Request,Response}. r=asuth https://hg.mozilla.org/integration/autoland/rev/3d539eb7faff Implement ServiceWorkerOp{Args,Promise,Result}, FetchEventRespondWith{Promise,Result}, and IPCFetchEventRespondWithResult. r=asuth https://hg.mozilla.org/integration/autoland/rev/0fd1fd7c3f06 Implement ServiceWorkerShutdownBlocker. r=asuth https://hg.mozilla.org/integration/autoland/rev/1b7169b75760 Have ServiceWorkerManager block shutdown on "profile-change-teardown" when in the parent process with parent intercept enabled. r=asuth https://hg.mozilla.org/integration/autoland/rev/097a29f3ff9a Add OptionalServiceWorkerData to RemoteWorkerData. r=asuth https://hg.mozilla.org/integration/autoland/rev/e7d6d8d64e8a Implement PRemoteWorkerController IPDL protocol and RemoteWorkerController{Parent,Child}. r=asuth https://hg.mozilla.org/integration/autoland/rev/12aba06d169c Refactor RemoteWorkerController to handle Service Workers' and Shared Workers' operations. r=asuth https://hg.mozilla.org/integration/autoland/rev/7df0e0ff9a82 Refactor RemoteWorkerChild to handle Service Workers' and Shared Workers' operations and to make its state data/transitions safer. r=asuth https://hg.mozilla.org/integration/autoland/rev/6e9273940bf5 Implement PFetchEventOp(Proxy) IPDL protocols and FetchEventOp(Proxy){Parent,Child}. r=asuth https://hg.mozilla.org/integration/autoland/rev/ea7334da65d9 Implement ServiceWorkerOp and its subclasses. r=asuth https://hg.mozilla.org/integration/autoland/rev/c46b31113adb Let ServiceWorkerOpArgs be sent from the parent process to a content process. r=asuth https://hg.mozilla.org/integration/autoland/rev/796c617b989f Implement ServiceWorkerPrivateImpl to dispatch operations to content processes and respond to their results. r=asuth https://hg.mozilla.org/integration/autoland/rev/1ac9661e7fb4 Implement cross-process ServiceWorkerGlobalScope.skipWaiting(). r=asuth https://hg.mozilla.org/integration/autoland/rev/d681c92a7f05 Only spawn Service Workers in non-web-extensions processes that won't imminently shutdown. r=asuth https://hg.mozilla.org/integration/autoland/rev/ae78ac86cc86 Make ServiceWorkerPrivate use ServiceWorkerPrivateImpl when parent-intercept is enabled. r=asuth https://hg.mozilla.org/integration/autoland/rev/bcb4d348a847 Allow the delayed ServiceWorkerRegistration.update() mechanism to handle multiple simultaneous requests without timing out. r=asuth https://hg.mozilla.org/integration/autoland/rev/4a45f2c447fd Update the update algorithm to better match the spec r=asuth
Upstream PR was closed without merging

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&resultStatus=testfailed%2Cbusted%2Cexception&revision=4a45f2c447fddfe706fb728b32c4121878b11206&selectedJob=261423404

Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=261423404&repo=autoland&lineNumber=41401

Backout link: https://hg.mozilla.org/integration/autoland/rev/ad33a9311b303cd8f9bdbf6da184454040301e39

[task 2019-08-13T20:54:31.230Z] 31:20.84 make[4]: Entering directory '/builds/worker/checkouts/gecko/obj-analyzed/dom/serviceworkers'
[task 2019-08-13T20:54:31.231Z] 31:20.84 /builds/worker/workspace/sixgill/usr/libexec/sixgill/scripts/wrap_gcc/basecc /builds/worker/workspace/sixgill/usr/libexec/sixgill/scripts/wrap_gcc/g++ -o Unified_cpp_dom_serviceworkers1.o -c -I/builds/worker/checkouts/gecko/obj-analyzed/dist/stl_wrappers -I/builds/worker/checkouts/gecko/obj-analyzed/dist/system_wrappers -include /builds/worker/checkouts/gecko/config/gcc_hidden.h -DDEBUG=1 -DOS_POSIX=1 -DOS_LINUX=1 -DSTATIC_EXPORTABLE_JS_API -DMOZ_HAS_MOZGLUE -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -I/builds/worker/checkouts/gecko/dom/serviceworkers -I/builds/worker/checkouts/gecko/obj-analyzed/dom/serviceworkers -I/builds/worker/checkouts/gecko/obj-analyzed/ipc/ipdl/_ipdlheaders -I/builds/worker/checkouts/gecko/ipc/chromium/src -I/builds/worker/checkouts/gecko/ipc/glue -I/builds/worker/checkouts/gecko/extensions/permissions -I/builds/worker/checkouts/gecko/js/xpconnect/loader -I/builds/worker/checkouts/gecko/obj-analyzed/dist/include -I/builds/worker/checkouts/gecko/obj-analyzed/dist/include/nspr -I/builds/worker/checkouts/gecko/obj-analyzed/dist/include/nss -fPIC -DMOZILLA_CLIENT -include /builds/worker/checkouts/gecko/obj-analyzed/mozilla-config.h -Wno-attributes -Wno-ignored-attributes -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -Wall -Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith -Wsign-compare -Wtype-limits -Wunreachable-code -Wwrite-strings -Wno-invalid-offsetof -Wduplicated-cond -Wno-error=maybe-uninitialized -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=coverage-mismatch -Wno-error=free-nonheap-object -Wformat -fno-sized-deallocation -Wno-attributes -Wno-ignored-attributes -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-exceptions -fno-strict-aliasing -fno-rtti -ffunction-sections -fdata-sections -fno-exceptions -fno-math-errno -pthread -pipe -g -freorder-blocks -Os -fno-omit-frame-pointer -funwind-tables -Werror -MD -MP -MF .deps/Unified_cpp_dom_serviceworkers1.o.pp /builds/worker/checkouts/gecko/obj-analyzed/dom/serviceworkers/Unified_cpp_dom_serviceworkers1.cpp
[task 2019-08-13T20:54:31.231Z] 31:20.84 In file included from /builds/worker/checkouts/gecko/obj-analyzed/dist/include/mozilla/Assertions.h:16:0,
[task 2019-08-13T20:54:31.231Z] 31:20.84 from /builds/worker/checkouts/gecko/obj-analyzed/dist/include/mozilla/UniquePtr.h:12,
[task 2019-08-13T20:54:31.231Z] 31:20.84 from /builds/worker/checkouts/gecko/dom/serviceworkers/ServiceWorkerDescriptor.h:9,
[task 2019-08-13T20:54:31.231Z] 31:20.84 from /builds/worker/checkouts/gecko/dom/serviceworkers/ServiceWorkerDescriptor.cpp:7,
[task 2019-08-13T20:54:31.231Z] 31:20.84 from /builds/worker/checkouts/gecko/obj-analyzed/dom/serviceworkers/Unified_cpp_dom_serviceworkers1.cpp:2:
[task 2019-08-13T20:54:31.231Z] 31:20.84 /builds/worker/checkouts/gecko/obj-analyzed/dist/include/mozilla/Attributes.h:807:7: error: attributes are not allowed on a function-definition
[task 2019-08-13T20:54:31.232Z] 31:20.84 attribute((annotate("moz_no_addref_release_on_return")))
[task 2019-08-13T20:54:31.232Z] 31:20.84 ^
[task 2019-08-13T20:54:31.232Z] 31:20.84 /builds/worker/checkouts/gecko/dom/serviceworkers/ServiceWorkerPrivateImpl.cpp:280:20: note: in expansion of macro 'MOZ_NO_ADDREF_RELEASE_ON_RETURN'
[task 2019-08-13T20:54:31.232Z] 31:20.84 operator->() const MOZ_NO_ADDREF_RELEASE_ON_RETURN {
[task 2019-08-13T20:54:31.232Z] 31:20.84 ^
[task 2019-08-13T20:54:31.232Z] 31:20.84 /builds/worker/checkouts/gecko/config/rules.mk:787: recipe for target 'Unified_cpp_dom_serviceworkers1.o' failed

Flags: needinfo?(perry)
Upstream PR was closed without merging
Pushed by pjiang@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/ae221b628899 Properly declare some dependencies so everything will compile with additional files. r=asuth https://hg.mozilla.org/integration/autoland/rev/3449c2eba4c6 Correctly choose nsBufferedStream's underlying nsIInputStream after initialization. r=asuth https://hg.mozilla.org/integration/autoland/rev/2d5628a0e52d Support IPCStreamSource on the Worker Launcher thread. r=asuth https://hg.mozilla.org/integration/autoland/rev/581653ef33dd IPCStreamSource should not attempt to read from its stream if already closed. r=asuth https://hg.mozilla.org/integration/autoland/rev/ee4565104217 Avoid some assertions for ServiceWorkerManagers in child processes. r=asuth https://hg.mozilla.org/integration/autoland/rev/cd434b787ce6 Implement IPCInternal{Request,Response}. r=asuth https://hg.mozilla.org/integration/autoland/rev/bf5d60c7a85a Implement ServiceWorkerOp{Args,Promise,Result}, FetchEventRespondWith{Promise,Result}, and IPCFetchEventRespondWithResult. r=asuth https://hg.mozilla.org/integration/autoland/rev/bacf8499ba7b Implement ServiceWorkerShutdownBlocker. r=asuth https://hg.mozilla.org/integration/autoland/rev/395062aef2ec Have ServiceWorkerManager block shutdown on "profile-change-teardown" when in the parent process with parent intercept enabled. r=asuth https://hg.mozilla.org/integration/autoland/rev/6ed55807374f Add OptionalServiceWorkerData to RemoteWorkerData. r=asuth https://hg.mozilla.org/integration/autoland/rev/11f010e6d6e7 Implement PRemoteWorkerController IPDL protocol and RemoteWorkerController{Parent,Child}. r=asuth https://hg.mozilla.org/integration/autoland/rev/0b03a19a6dc1 Refactor RemoteWorkerController to handle Service Workers' and Shared Workers' operations. r=asuth https://hg.mozilla.org/integration/autoland/rev/666bf4260046 Refactor RemoteWorkerChild to handle Service Workers' and Shared Workers' operations and to make its state data/transitions safer. r=asuth https://hg.mozilla.org/integration/autoland/rev/85df1959eb98 Implement PFetchEventOp(Proxy) IPDL protocols and FetchEventOp(Proxy){Parent,Child}. r=asuth https://hg.mozilla.org/integration/autoland/rev/1b9a8b022fce Implement ServiceWorkerOp and its subclasses. r=asuth https://hg.mozilla.org/integration/autoland/rev/8e3fedf6502a Let ServiceWorkerOpArgs be sent from the parent process to a content process. r=asuth https://hg.mozilla.org/integration/autoland/rev/1de357bc1921 Implement ServiceWorkerPrivateImpl to dispatch operations to content processes and respond to their results. r=asuth https://hg.mozilla.org/integration/autoland/rev/216591953f97 Implement cross-process ServiceWorkerGlobalScope.skipWaiting(). r=asuth https://hg.mozilla.org/integration/autoland/rev/6a40ab6852cb Only spawn Service Workers in non-web-extensions processes that won't imminently shutdown. r=asuth https://hg.mozilla.org/integration/autoland/rev/906b80778539 Make ServiceWorkerPrivate use ServiceWorkerPrivateImpl when parent-intercept is enabled. r=asuth https://hg.mozilla.org/integration/autoland/rev/a275eb0b1a19 Allow the delayed ServiceWorkerRegistration.update() mechanism to handle multiple simultaneous requests without timing out. r=asuth https://hg.mozilla.org/integration/autoland/rev/7e09ad9ceea6 Update the update algorithm to better match the spec r=asuth
Upstream web-platform-tests status checks passed, PR will merge once commit reaches central.
Upstream PR was closed without merging
Pushed by pjiang@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/a8966ba20267 Properly declare some dependencies so everything will compile with additional files. r=asuth https://hg.mozilla.org/integration/autoland/rev/f9e8d4068c06 Correctly choose nsBufferedStream's underlying nsIInputStream after initialization. r=asuth https://hg.mozilla.org/integration/autoland/rev/448714db54b3 Support IPCStreamSource on the Worker Launcher thread. r=asuth https://hg.mozilla.org/integration/autoland/rev/49091733782a IPCStreamSource should not attempt to read from its stream if already closed. r=asuth https://hg.mozilla.org/integration/autoland/rev/ea69dc3c1056 Avoid some assertions for ServiceWorkerManagers in child processes. r=asuth https://hg.mozilla.org/integration/autoland/rev/1f77d3afe290 Implement IPCInternal{Request,Response}. r=asuth https://hg.mozilla.org/integration/autoland/rev/d9caf27cef95 Implement ServiceWorkerOp{Args,Promise,Result}, FetchEventRespondWith{Promise,Result}, and IPCFetchEventRespondWithResult. r=asuth https://hg.mozilla.org/integration/autoland/rev/6d3ff0852089 Implement ServiceWorkerShutdownBlocker. r=asuth https://hg.mozilla.org/integration/autoland/rev/fa280993de59 Have ServiceWorkerManager block shutdown on "profile-change-teardown" when in the parent process with parent intercept enabled. r=asuth https://hg.mozilla.org/integration/autoland/rev/1db490b0883e Add OptionalServiceWorkerData to RemoteWorkerData. r=asuth https://hg.mozilla.org/integration/autoland/rev/1a0992c67826 Implement PRemoteWorkerController IPDL protocol and RemoteWorkerController{Parent,Child}. r=asuth https://hg.mozilla.org/integration/autoland/rev/183b54cffbd1 Refactor RemoteWorkerController to handle Service Workers' and Shared Workers' operations. r=asuth https://hg.mozilla.org/integration/autoland/rev/20b5efa4517d Refactor RemoteWorkerChild to handle Service Workers' and Shared Workers' operations and to make its state data/transitions safer. r=asuth https://hg.mozilla.org/integration/autoland/rev/6e4c363ba32a Implement PFetchEventOp(Proxy) IPDL protocols and FetchEventOp(Proxy){Parent,Child}. r=asuth https://hg.mozilla.org/integration/autoland/rev/fa549b66c9d3 Implement ServiceWorkerOp and its subclasses. r=asuth https://hg.mozilla.org/integration/autoland/rev/c73b86cbe4e3 Let ServiceWorkerOpArgs be sent from the parent process to a content process. r=asuth https://hg.mozilla.org/integration/autoland/rev/b248a65ecbbb Implement ServiceWorkerPrivateImpl to dispatch operations to content processes and respond to their results. r=asuth https://hg.mozilla.org/integration/autoland/rev/5e7a1885e190 Implement cross-process ServiceWorkerGlobalScope.skipWaiting(). r=asuth https://hg.mozilla.org/integration/autoland/rev/877b778e1529 Only spawn Service Workers in non-web-extensions processes that won't imminently shutdown. r=asuth https://hg.mozilla.org/integration/autoland/rev/4977af1ab4a2 Make ServiceWorkerPrivate use ServiceWorkerPrivateImpl when parent-intercept is enabled. r=asuth https://hg.mozilla.org/integration/autoland/rev/7b8515d888a9 Allow the delayed ServiceWorkerRegistration.update() mechanism to handle multiple simultaneous requests without timing out. r=asuth https://hg.mozilla.org/integration/autoland/rev/8f031439c3bc Update the update algorithm to better match the spec r=asuth
Upstream web-platform-tests status checks passed, PR will merge once commit reaches central.
Regressions: 1574457
Regressions: 1575028
Regressions: 1608716
Regressions: 1608719
Regressions: 1601024
Regressions: 1619329
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: