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

Issue 607818 link

Starred by 2 users

Issue metadata

Status: Started
Owner:
Last visit 24 days ago
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 3
Type: Bug

Blocking:
issue 607817



Sign in to add a comment

Fix cc_perftests issues in debug mode.

Project Member Reported by prashan...@samsung.com, Apr 29 2016

Issue description

There are many crashes seen, when ./out/Debug/cc_perftests is run. Fix them to make them correct. 
 
Cc: danakj@chromium.org ericrk@chromium.org reve...@chromium.org vmp...@chromium.org enne@chromium.org
Blocking: 607817
Project Member

Comment 3 by bugdroid1@chromium.org, Apr 29 2016

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

commit 47e6a3dfb5ffc428ec6a7f5788c73c8d4c6d7364
Author: prashant.n <prashant.n@samsung.com>
Date: Fri Apr 29 10:43:28 2016

cc: Correct task graph edges in tile_task_worker_pool_perf_tests.cc.

The task is edge is (task <-- dependent). This patch corrects edges in
tile_task_worker_pool_perf_tests.cc in BuildTileTaskGraph.

BUG=607818
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel

Review-Url: https://codereview.chromium.org/1928273002
Cr-Commit-Position: refs/heads/master@{#390613}

[modify] https://crrev.com/47e6a3dfb5ffc428ec6a7f5788c73c8d4c6d7364/cc/raster/tile_task_worker_pool_perftest.cc

As of current codebase, following tests are failing -

RasterBufferProviderPerfTests/RasterBufferProviderPerfTest.ScheduleAndExecuteTasks/0 (../../cc/raster/raster_buffer_provider_perftest.cc:447)
RasterBufferProviderPerfTests/RasterBufferProviderPerfTest.ScheduleAndExecuteTasks/1 (../../cc/raster/raster_buffer_provider_perftest.cc:447)
RasterBufferProviderPerfTests/RasterBufferProviderPerfTest.ScheduleAndExecuteTasks/2 (../../cc/raster/raster_buffer_provider_perftest.cc:447)
RasterBufferProviderPerfTests/RasterBufferProviderPerfTest.ScheduleAndExecuteTasks/3 (../../cc/raster/raster_buffer_provider_perftest.cc:447)
SurfaceAggregatorPerfTest.FewSurfaces (../../cc/surfaces/surface_aggregator_perftest.cc:156)
SurfaceAggregatorPerfTest.FewSurfacesAggregateDamaged (../../cc/surfaces/surface_aggregator_perftest.cc:172)
SurfaceAggregatorPerfTest.FewSurfacesDamageCalc (../../cc/surfaces/surface_aggregator_perftest.cc:168)
SurfaceAggregatorPerfTest.ManySurfacesOpaque (../../cc/surfaces/surface_aggregator_perftest.cc:148)
SurfaceAggregatorPerfTest.ManySurfacesOpaqueDamageCalc (../../cc/surfaces/surface_aggregator_perftest.cc:160)
SurfaceAggregatorPerfTest.ManySurfacesTransparent (../../cc/surfaces/surface_aggregator_perftest.cc:152)
SurfaceAggregatorPerfTest.ManySurfacesTransparentDamageCalc (../../cc/surfaces/surface_aggregator_perftest.cc:164)
Owner: prashan...@samsung.com
Status: Started (was: Untriaged)
Project Member

Comment 6 by bugdroid1@chromium.org, May 26 2016

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

commit 06e1561a832083330a193743a427b1354ab3cd39
Author: prashant.n <prashant.n@samsung.com>
Date: Thu May 26 17:35:21 2016

cc: Remove ScheduleOnOriginThread() and CompleteOnOriginThread().

The task's job is performed in RunOnWorkerThread() and schedule or
complete are not needed as a part of task's job. Those are the
responsibilities of task's owner (TileManager - compositor thread).
This patch removes following functions which were basically needed for
async upload. Now raster buffer is provided to task at the time of ctor
and functionality of CompleteOnOriginThread() is moved to task's owner.

  ScheduleOnOriginThread()
  CompleteOnOriginThread()

New OnTaskCompleted() function calls corresponding function of task
owner. This patch implements following life cycle for the task.

  1. Task's owner creates task with all needed info on origin thread.
  2. Task is scheduled and run on worker thread.
  3. Completed task is processed on origin thread by task owner.
  4. Task is destroyed.

This patch also fixes few task related failing cc_perftests (607818).

BUG= 499372 , 599863, 607818,  613529 
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel

Review-Url: https://codereview.chromium.org/1866043006
Cr-Commit-Position: refs/heads/master@{#396218}

[modify] https://crrev.com/06e1561a832083330a193743a427b1354ab3cd39/cc/raster/raster_buffer_provider_perftest.cc
[modify] https://crrev.com/06e1561a832083330a193743a427b1354ab3cd39/cc/raster/raster_buffer_provider_unittest.cc
[modify] https://crrev.com/06e1561a832083330a193743a427b1354ab3cd39/cc/raster/task.cc
[modify] https://crrev.com/06e1561a832083330a193743a427b1354ab3cd39/cc/raster/task.h
[modify] https://crrev.com/06e1561a832083330a193743a427b1354ab3cd39/cc/raster/task_graph_runner_perftest.cc
[modify] https://crrev.com/06e1561a832083330a193743a427b1354ab3cd39/cc/raster/tile_task.cc
[modify] https://crrev.com/06e1561a832083330a193743a427b1354ab3cd39/cc/raster/tile_task.h
[modify] https://crrev.com/06e1561a832083330a193743a427b1354ab3cd39/cc/test/fake_tile_task_manager.cc
[modify] https://crrev.com/06e1561a832083330a193743a427b1354ab3cd39/cc/test/fake_tile_task_manager.h
[modify] https://crrev.com/06e1561a832083330a193743a427b1354ab3cd39/cc/test/task_graph_runner_test_template.h
[modify] https://crrev.com/06e1561a832083330a193743a427b1354ab3cd39/cc/tiles/gpu_image_decode_controller.cc
[modify] https://crrev.com/06e1561a832083330a193743a427b1354ab3cd39/cc/tiles/gpu_image_decode_controller.h
[modify] https://crrev.com/06e1561a832083330a193743a427b1354ab3cd39/cc/tiles/gpu_image_decode_controller_unittest.cc
[modify] https://crrev.com/06e1561a832083330a193743a427b1354ab3cd39/cc/tiles/software_image_decode_controller.cc
[modify] https://crrev.com/06e1561a832083330a193743a427b1354ab3cd39/cc/tiles/software_image_decode_controller_unittest.cc
[modify] https://crrev.com/06e1561a832083330a193743a427b1354ab3cd39/cc/tiles/tile_manager.cc
[modify] https://crrev.com/06e1561a832083330a193743a427b1354ab3cd39/cc/tiles/tile_manager.h
[modify] https://crrev.com/06e1561a832083330a193743a427b1354ab3cd39/cc/tiles/tile_manager_unittest.cc
[modify] https://crrev.com/06e1561a832083330a193743a427b1354ab3cd39/cc/tiles/tile_task_manager.cc
[modify] https://crrev.com/06e1561a832083330a193743a427b1354ab3cd39/cc/tiles/tile_task_manager.h

Now only following tests remained to fix (SurfaceAggregatorPerfTest.*) -

SurfaceAggregatorPerfTest.FewSurfaces (../../cc/surfaces/surface_aggregator_perftest.cc:156)
SurfaceAggregatorPerfTest.FewSurfacesAggregateDamaged (../../cc/surfaces/surface_aggregator_perftest.cc:172)
SurfaceAggregatorPerfTest.FewSurfacesDamageCalc (../../cc/surfaces/surface_aggregator_perftest.cc:168)
SurfaceAggregatorPerfTest.ManySurfacesOpaque (../../cc/surfaces/surface_aggregator_perftest.cc:148)
SurfaceAggregatorPerfTest.ManySurfacesOpaqueDamageCalc (../../cc/surfaces/surface_aggregator_perftest.cc:160)
SurfaceAggregatorPerfTest.ManySurfacesTransparent (../../cc/surfaces/surface_aggregator_perftest.cc:152)
SurfaceAggregatorPerfTest.ManySurfacesTransparentDamageCalc (../../cc/surfaces/surface_aggregator_perftest.cc:164)
With latest codebase, following additional tests fail in debug mode -

    TileManagerPerfTest.EvictionTileQueueConstruct (../../cc/tiles/tile_manager_perftest.cc:336)
    TileManagerPerfTest.EvictionTileQueueConstructAndIterate (../../cc/tiles/tile_manager_perftest.cc:342)
    TileManagerPerfTest.PrepareTiles (../../cc/tiles/tile_manager_perftest.cc:303)
    TileManagerPerfTest.RasterTileQueueConstruct (../../cc/tiles/tile_manager_perftest.cc:315)
    TileManagerPerfTest.RasterTileQueueConstructAndIterate (../../cc/tiles/tile_manager_perftest.cc:321)

with FATAL:layer_tree_host_impl.cc(1967)] Check failed: !pending_tree_duration_timer_.

Without adding this to trybots it is difficult to get this caught.
The last DCHECK seems to be caused (or exposed) by https://codereview.chromium.org/1878323004 .

It seems like we're creating another pending tree before we activate.
Uploaded a fix for #9: https://codereview.chromium.org/2027803003/
Project Member

Comment 11 by bugdroid1@chromium.org, Jun 1 2016

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

commit 234a1a16b8e3641a4d3e065344a8cc32b5ea431f
Author: ajuma <ajuma@chromium.org>
Date: Wed Jun 01 17:57:54 2016

cc: Destroy pending_tree_duration_timer_ when reseting trees

This fixes a DCHECK during TileManagerPerfTests. LTHI::ResetTreesForTesting
destroys the pending tree, so if it doesn't also destroy
the pending tree duration timer, the next call to CreatePendingTree
will fail the DCHECK that the timer doesn't already exist.

BUG=607818
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel

Review-Url: https://codereview.chromium.org/2027803003
Cr-Commit-Position: refs/heads/master@{#397180}

[modify] https://crrev.com/234a1a16b8e3641a4d3e065344a8cc32b5ea431f/cc/trees/layer_tree_host_impl.cc

You started fixing this bug over two years ago. Are you still working on it? 

Sign in to add a comment