New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 594026 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Apr 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug

Blocking:
issue 557194



Sign in to add a comment

Transfer ownership of LayerImpl to LayerTreeImpl

Project Member Reported by vollick@chromium.org, Mar 11 2016

Issue description

LayerImpl's currently own their children. We ultimately want to convert LayerTreeImpl to a LayerListImpl that owns the LayerImpl instances, but even before that, having the LayerTreeImpl owning the LayerImpls will give us much more flexibility about how we treat the collection of LayerImpls allowing for a gradual transition to the LayerListImpl. It will also be important for the unit tests, which must repeatedly convert from test-only-tree to layer list. Having ownership in the tree would make this tricky.

 
Project Member

Comment 1 by bugdroid1@chromium.org, Mar 22 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4

commit 83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4
Author: vollick <vollick@chromium.org>
Date: Tue Mar 22 18:33:27 2016

Transfer LayerImpl ownership to LayerTreeImpl

I have taken a very simple strategy. I have
retained all LayerImpl functions related to
transfer of ownership (AddChild, etc). These now
update raw pointers on the LayerImpl as well as
updating true ownership by talking to the LTI.

This allows most unit test code to remain as is.
LayerImpl's may be constructed and ownership may
be transferred just as it had been.

BUG= 594026 
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel

Review URL: https://codereview.chromium.org/1801853002

Cr-Commit-Position: refs/heads/master@{#382619}

[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/BUILD.gn
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/cc.gyp
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/debug/debug_rect_history.h
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/layers/layer.h
[add] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/layers/layer_collections.h
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/layers/layer_impl.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/layers/layer_impl.h
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/layers/layer_impl_unittest.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/layers/layer_list_iterator.cc
[delete] https://crrev.com/b08686b8c95ece5c34b49904496fdaa06094c0ff/cc/layers/layer_lists.h
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/layers/layer_position_constraint_unittest.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/layers/layer_unittest.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/layers/layer_utils_unittest.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/layers/picture_layer_impl_perftest.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/layers/picture_layer_impl_unittest.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/layers/render_surface_impl.h
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/layers/render_surface_impl_unittest.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/layers/scrollbar_layer_unittest.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/test/fake_layer_tree_host.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/test/fake_layer_tree_host_impl.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/test/layer_tree_host_common_test.h
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/test/layer_tree_json_parser_unittest.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/tiles/tile_manager_perftest.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/tiles/tile_manager_unittest.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/damage_tracker.h
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/damage_tracker_unittest.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/draw_property_utils.h
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/layer_tree_host.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/layer_tree_host.h
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/layer_tree_host_common.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/layer_tree_host_common.h
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/layer_tree_host_common_perftest.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/layer_tree_host_common_unittest.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/layer_tree_host_impl.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/layer_tree_host_impl.h
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/layer_tree_host_impl_unittest.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/layer_tree_host_unittest.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/layer_tree_host_unittest_animation.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/layer_tree_host_unittest_context.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/layer_tree_host_unittest_copyrequest.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/layer_tree_host_unittest_damage.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/layer_tree_host_unittest_occlusion.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/layer_tree_host_unittest_picture.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/layer_tree_host_unittest_scroll.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/layer_tree_host_unittest_video.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/layer_tree_impl.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/layer_tree_impl.h
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/layer_tree_impl_unittest.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/tree_synchronizer.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/tree_synchronizer.h
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/cc/trees/tree_synchronizer_unittest.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/chrome/browser/android/compositor/compositor_view.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/chrome/browser/android/compositor/compositor_view.h
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/chrome/browser/android/compositor/layer/content_layer.cc
[modify] https://crrev.com/83fbfc832bb24abbea9c9dfa4ff17ad20bc047f4/chrome/browser/android/compositor/layer/tab_layer.cc


Thread 4 CRASHED [EXCEPTION_ACCESS_VIOLATION_WRITE @ 0x04032890 ] MAGIC SIGNATURE THREAD
0x000007fee9461129	(chrome_child.dll -tree_synchronizer.cc:26 )	cc::SynchronizeTreesInternal<cc::Layer>(cc::Layer *,cc::LayerTreeImpl *)
0x000007fee940bf54	(chrome_child.dll -layer_tree_host.cc:375 )	cc::LayerTreeHost::FinishCommitOnImplThread(cc::LayerTreeHostImpl *)
0x000007fee94c17f2	(chrome_child.dll -proxy_impl.cc:552 )	cc::ProxyImpl::ScheduledActionCommit()
0x000007fee94cb4aa	(chrome_child.dll -scheduler.cc:696 )	cc::Scheduler::ProcessScheduledActions()
0x000007fee94c8a94	(chrome_child.dll -scheduler.cc:178 )	cc::Scheduler::NotifyReadyToCommit()
0x000007fee94c0058	(chrome_child.dll -proxy_impl.cc:274 )	cc::ProxyImpl::StartCommitOnImpl(cc::CompletionEvent *,cc::LayerTreeHost *,base::TimeTicks,bool)

Around 41 crashes in cc::SynchronizeTreesInternal<cc::Layer> in the latest canary 51.0.2688.0

Comment 3 by ajuma@chromium.org, Mar 24 2016

All the crashes are from the same user, and they all seemed to happen within a span of 6 minutes.

Comment 4 by ajuma@chromium.org, Apr 19 2016

Status: Fixed (was: Started)

Sign in to add a comment