|
|
DescriptionCorrectly track cross-thread pending FetchEvents.
ServiceWorkerGlobalScopeProxy is an object that resides on the
main thread heap, but is passed to the embedder and called
on the (service) worker thread. As the object is GC managed
by the main thread, the worker thread cannot update the proxy
object with references to heap objects residing in its heap,
as the per-thread heap design assumes that each heap only keeps
local heap references (via Member<T> and similar.) References
across heaps must instead be kept and handled by explicit
CrossThreadPersistent<> references.
This per-thread heap rule was not being followed for the tracking
of pending FetchEvents; adjust the map representation to do so.
R=haraken
BUG=702527
Review-Url: https://codereview.chromium.org/2752203005
Cr-Commit-Position: refs/heads/master@{#457970}
Committed: https://chromium.googlesource.com/chromium/src/+/d0ff3d34a5798ddc3db10815d49dc1687e4f866e
Patch Set 1 #Patch Set 2 : add comment #
Messages
Total messages: 21 (15 generated)
The CQ bit was checked by sigbjornf@opera.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: win_chromium_x64_rel_ng on master.tryserver.chromium.win (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_x64_...)
The CQ bit was checked by sigbjornf@opera.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
Description was changed from ========== Correctly track cross-thread pending FetchEvents. R= BUG=702527 ========== to ========== Correctly track cross-thread pending FetchEvents. ServiceWorkerGlobalScopeProxy is an object that resides on the main thread heap, but is passed to the embedder and called on the (service) worker thread. As the object is GC managed by the main thread, the worker thread cannot update the proxy object with references to heap objects residing in its heap, as the per-thread heap design assumes that each heap only keeps local heap references. References across heaps must instead be kept and handled by explicit CrossThreadPersistent<> references. This per-thread heap rule was not being followed for the tracking of pending FetchEvents; adjust the map representation to do so. R= BUG=702527 ==========
Description was changed from ========== Correctly track cross-thread pending FetchEvents. ServiceWorkerGlobalScopeProxy is an object that resides on the main thread heap, but is passed to the embedder and called on the (service) worker thread. As the object is GC managed by the main thread, the worker thread cannot update the proxy object with references to heap objects residing in its heap, as the per-thread heap design assumes that each heap only keeps local heap references. References across heaps must instead be kept and handled by explicit CrossThreadPersistent<> references. This per-thread heap rule was not being followed for the tracking of pending FetchEvents; adjust the map representation to do so. R= BUG=702527 ========== to ========== Correctly track cross-thread pending FetchEvents. ServiceWorkerGlobalScopeProxy is an object that resides on the main thread heap, but is passed to the embedder and called on the (service) worker thread. As the object is GC managed by the main thread, the worker thread cannot update the proxy object with references to heap objects residing in its heap, as the per-thread heap design assumes that each heap only keeps local heap references (via Member<T> and similar.) References across heaps must instead be kept and handled by explicit CrossThreadPersistent<> references. This per-thread heap rule was not being followed for the tracking of pending FetchEvents; adjust the map representation to do so. R= BUG=702527 ==========
sigbjornf@opera.com changed reviewers: + falken@chromium.org, horo@chromium.org, oilpan-reviews@chromium.org
please take a look.
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
LGTM Why didn't we hit the cross-thread-heap-pointer dcheck during the marking phase? Just by accident?
On 2017/03/18 14:42:43, haraken wrote: > LGTM > > Why didn't we hit the cross-thread-heap-pointer dcheck during the marking phase? > Just by accident? I believe so (but don't know), tests do not trigger GCs afterwards for this to have been detected. I can't see many layout tests for the feature, but would be interested to know more about test status (http/tests/serviceworker/navigation-preload/chromium/use-counter.html seems relevant, but what else?)
Description was changed from ========== Correctly track cross-thread pending FetchEvents. ServiceWorkerGlobalScopeProxy is an object that resides on the main thread heap, but is passed to the embedder and called on the (service) worker thread. As the object is GC managed by the main thread, the worker thread cannot update the proxy object with references to heap objects residing in its heap, as the per-thread heap design assumes that each heap only keeps local heap references (via Member<T> and similar.) References across heaps must instead be kept and handled by explicit CrossThreadPersistent<> references. This per-thread heap rule was not being followed for the tracking of pending FetchEvents; adjust the map representation to do so. R= BUG=702527 ========== to ========== Correctly track cross-thread pending FetchEvents. ServiceWorkerGlobalScopeProxy is an object that resides on the main thread heap, but is passed to the embedder and called on the (service) worker thread. As the object is GC managed by the main thread, the worker thread cannot update the proxy object with references to heap objects residing in its heap, as the per-thread heap design assumes that each heap only keeps local heap references (via Member<T> and similar.) References across heaps must instead be kept and handled by explicit CrossThreadPersistent<> references. This per-thread heap rule was not being followed for the tracking of pending FetchEvents; adjust the map representation to do so. R=haraken BUG=702527 ==========
The CQ bit was checked by sigbjornf@opera.com
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
CQ is committing da patch. Bot data: {"patchset_id": 20001, "attempt_start_ts": 1489852036360880, "parent_rev": "3880018ceed2910bb727a9580cd897f5ae4b6844", "commit_rev": "d0ff3d34a5798ddc3db10815d49dc1687e4f866e"}
Message was sent while issue was closed.
Description was changed from ========== Correctly track cross-thread pending FetchEvents. ServiceWorkerGlobalScopeProxy is an object that resides on the main thread heap, but is passed to the embedder and called on the (service) worker thread. As the object is GC managed by the main thread, the worker thread cannot update the proxy object with references to heap objects residing in its heap, as the per-thread heap design assumes that each heap only keeps local heap references (via Member<T> and similar.) References across heaps must instead be kept and handled by explicit CrossThreadPersistent<> references. This per-thread heap rule was not being followed for the tracking of pending FetchEvents; adjust the map representation to do so. R=haraken BUG=702527 ========== to ========== Correctly track cross-thread pending FetchEvents. ServiceWorkerGlobalScopeProxy is an object that resides on the main thread heap, but is passed to the embedder and called on the (service) worker thread. As the object is GC managed by the main thread, the worker thread cannot update the proxy object with references to heap objects residing in its heap, as the per-thread heap design assumes that each heap only keeps local heap references (via Member<T> and similar.) References across heaps must instead be kept and handled by explicit CrossThreadPersistent<> references. This per-thread heap rule was not being followed for the tracking of pending FetchEvents; adjust the map representation to do so. R=haraken BUG=702527 Review-Url: https://codereview.chromium.org/2752203005 Cr-Commit-Position: refs/heads/master@{#457970} Committed: https://chromium.googlesource.com/chromium/src/+/d0ff3d34a5798ddc3db10815d49d... ==========
Message was sent while issue was closed.
Committed patchset #2 (id:20001) as https://chromium.googlesource.com/chromium/src/+/d0ff3d34a5798ddc3db10815d49d...
Message was sent while issue was closed.
On 2017/03/18 15:27:54, sof wrote: > On 2017/03/18 14:42:43, haraken wrote: > > LGTM > > > > Why didn't we hit the cross-thread-heap-pointer dcheck during the marking > phase? > > Just by accident? > > I believe so (but don't know), tests do not trigger GCs afterwards for this to > have been detected. > > I can't see many layout tests for the feature, but would be interested to know > more about test status > (http/tests/serviceworker/navigation-preload/chromium/use-counter.html seems > relevant, but what else?) Sorry for lack of response here. Most navigation preload tests are in external/wpt/service-workers/service-worker/navigation-preload. |