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

Issue 675545 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Feb 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

Check failed: HasTransformAnimationThatInflatesBounds() when tracing

Reported by rog...@opera.com, Dec 19 2016

Issue description

Chrome Version: 57.0.2957.0
OS: Linux (locally built content_shell with dchecks enabled)

What steps will reproduce the problem?
(1) Build content_shell with dchecks enabled
(2) Run: ./content_shell --no-sandbox  https://www.youtube.com/tv#/watch/ads/control?v=7E4GsPnGQrg  --trace-startup='cc,disabled-by-default-cc.debug' --trace-startup-duration=30
(3)

What is the expected result?
Starts normally and collects trace results

What happens instead?
This dcheck triggers before the video starts playing:
FATAL:animation_player.cc(852)] Check failed: HasTransformAnimationThatInflatesBounds(). TransformAnimationBoundsForBox will give incorrect results if there are no transform animations affecting bounds, non-animated transform is not known

See complete stacktrace at the end of the issue description.

Please use labels and text to provide additional information.
It does not happen if I remove  the "disabled-by-default-cc.debug" category from the tracing so, not sure if this code is executed in other circumstances than that specific tracing category.

Stacktrace:
[9460:9464:1219/094720.393448:1628701874188:FATAL:animation_player.cc(852)] Check failed: HasTransformAnimationThatInflatesBounds(). TransformAnimationBoundsForBox will give incorrect results if there are no transform animations affecting bounds, non-animated transform is not known
#0 0x000001891e2e base::debug::StackTrace::StackTrace()
#1 0x0000018a509b logging::LogMessage::~LogMessage()
#2 0x000002697a7d cc::AnimationPlayer::TransformAnimationBoundsForBox()
#3 0x00000269b9b7 cc::ElementAnimations::TransformAnimationBoundsForBox()
#4 0x000002692c16 cc::AnimationHost::TransformAnimationBoundsForBox()
#5 0x0000023d74d8 cc::LayerUtils::GetAnimationBounds()
#6 0x0000023d60c5 cc::LayerImpl::AsValueInto()
#7 0x00000243b02d cc::PictureLayerImpl::AsValueInto()
#8 0x00000240c0ba cc::LayerTreeImpl::AsValueInto()
#9 0x000002460bc0 cc::LayerTreeHostImpl::AsValueWithFrameInto()
#10 0x00000245aad2 cc::LayerTreeHostImpl::DrawLayers()
#11 0x000004891c44 cc::ProxyImpl::DrawInternal()
#12 0x000004891988 cc::ProxyImpl::ScheduledActionDrawIfPossible()
#13 0x0000048888a9 cc::Scheduler::ProcessScheduledActions()
#14 0x00000488850e cc::Scheduler::OnBeginImplFrameDeadline()
#15 0x0000004c54da _ZN4base8internal13FunctorTraitsIMN7content21EmbeddedServiceRunnerEFvvEvE6InvokeIRKNS_7WeakPtrIS3_EEJEEEvS5_OT_DpOT0_
#16 0x00000064ef83 base::CancelableCallback<>::Forward()
#17 0x0000004c54da _ZN4base8internal13FunctorTraitsIMN7content21EmbeddedServiceRunnerEFvvEvE6InvokeIRKNS_7WeakPtrIS3_EEJEEEvS5_OT_DpOT0_
#18 0x00000192b76e base::debug::TaskAnnotator::RunTask()
#19 0x0000018abe4d base::MessageLoop::RunTask()
#20 0x0000018ac516 base::MessageLoop::DoWork()
#21 0x0000018adf29 base::MessagePumpDefault::Run()
#22 0x0000018abba5 base::MessageLoop::RunHandler()
#23 0x0000018cd40c base::RunLoop::Run()
#24 0x0000018f32cc base::Thread::Run()
#25 0x0000018f37c8 base::Thread::ThreadMain()
#26 0x0000018ecbbc base::(anonymous namespace)::ThreadFunc()
#27 0x7f2390b6f6ba start_thread
#28 0x7f238b98482d clone

 
Cc: loyso@chromium.org ajuma@chromium.org

Comment 2 by vmi...@chromium.org, Jan 19 2017

Cc: mikelawther@chromium.org
Components: -Internals>Tracing
Status: Available (was: Untriaged)
Owner: ajuma@chromium.org
Ali, can you take a look at this bug and triage as necessary? Thanks.

Comment 4 by ajuma@chromium.org, Jan 26 2017

This is happening because we have an ElementAnimations that has multiple AnimationPlayers, but only some of these players have a transform animation that inflates bounds. So it's legitimate to ask the ElementAnimations to compute TransformAnimationBoundsForBox, but to compute this the ElementAnimations needs to only ask those players that have a transform animation that inflates bounds to compute the transform animation bounds. I have a CL to fix this up for review: https://codereview.chromium.org/2655993002/
Project Member

Comment 5 by bugdroid1@chromium.org, Feb 2 2017

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

commit bd39ee6aee08c93647e9174347d7926e58b11012
Author: ajuma <ajuma@chromium.org>
Date: Thu Feb 02 19:14:39 2017

cc: Fix animation bounds computation for multiple players

When one ElementAnimations has multiple AnimationPlayers, the
ElementAnimations can have an animation that inflates bounds without
every player having such an animation. This CL makes ElementAnimations
correctly handle this case, fixing a DCHECK that was previously
being hit in AnimationPlayer::TransformAnimationBoundsForBox.

BUG= 675545 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

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

[modify] https://crrev.com/bd39ee6aee08c93647e9174347d7926e58b11012/cc/animation/element_animations.cc
[modify] https://crrev.com/bd39ee6aee08c93647e9174347d7926e58b11012/cc/animation/element_animations_unittest.cc

Components: Speed>Tracing
Labels: -Performance-Tracing

Comment 7 by ajuma@chromium.org, Feb 2 2017

Status: Fixed (was: Available)

Sign in to add a comment