Closed Bug 1231213 Opened 4 years ago Closed Last month

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 6 open bugs, Regressed 1 open bug)

Details

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

Attachments

(24 files, 1 obsolete file)

47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
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
Duplicate of this bug: 1231216
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
Blocks: 1506892
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.
Depends on: 1509135
Depends on: 1510368

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!

Blocks: 1535924

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

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
Blocks: 1552945

Depends on D26179

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!

Blocks: 1543316
  • 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
Flags: needinfo?(perry)
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
You need to log in before you can comment on or make changes to this bug.