[Webkit-unassigned] [Bug 190690] New: Flakey behavior when an opacity transition ends

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Oct 17 15:02:26 PDT 2018


https://bugs.webkit.org/show_bug.cgi?id=190690

            Bug ID: 190690
           Summary: Flakey behavior when an opacity transition ends
           Product: WebKit
           Version: WebKit Nightly Build
          Hardware: Unspecified
                OS: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: Animations
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: simon.fraser at apple.com
                CC: dino at apple.com

Created attachment 352649

  --> https://bugs.webkit.org/attachment.cgi?id=352649&action=review

Testcase

I'm having issues with a flakey test (compositing/geometry/limit-layer-bounds-opacity-transition.html; attached) when working on the patch from bug 90342.

What I see is when the transition ends, we don't always remove the RenderLayer, because in RenderBox::requiresLayer(), hasRunningAcceleratedAnimations() is true.

In the good case, the list of animated elements gets updated here:

  * frame #0: 0x00000006e758ee0b WebCore`WebCore::DocumentTimeline::updateListOfElementsWithRunningAcceleratedAnimationsForElement(this=0x00000006fd0af300, element=0x0000000702f00138) at DocumentTimeline.cpp:429
    frame #1: 0x00000006e758f05f WebCore`WebCore::DocumentTimeline::animationAcceleratedRunningStateDidChange(this=0x00000006fd0af300, animation=0x00000006fd0e3540) at DocumentTimeline.cpp:422
    frame #2: 0x00000006e7597f48 WebCore`WebCore::WebAnimation::acceleratedStateDidChange(this=0x00000006fd0e3540) at WebAnimation.cpp:1091
    frame #3: 0x00000006e7597e91 WebCore`WebCore::KeyframeEffectReadOnly::addPendingAcceleratedAction(this=0x00000006fd0e4630, action=Stop) at KeyframeEffectReadOnly.cpp:1253
    frame #4: 0x00000006e7596b64 WebCore`WebCore::KeyframeEffectReadOnly::updateAcceleratedAnimationState(this=0x00000006fd0e4630) at KeyframeEffectReadOnly.cpp:1230
    frame #5: 0x00000006e759695c WebCore`WebCore::KeyframeEffectReadOnly::apply(this=0x00000006fd0e4630, targetStyle=0x0000000701a70d80) at KeyframeEffectReadOnly.cpp:982
    frame #6: 0x00000006e759e4aa WebCore`WebCore::WebAnimation::resolve(this=0x00000006fd0e3540, targetStyle=0x0000000701a70d80) at WebAnimation.cpp:1074
    frame #7: 0x00000006e756d829 WebCore`WebCore::CSSTransition::resolve(this=0x00000006fd0e3540, targetStyle=0x0000000701a70d80) at CSSTransition.cpp:55
    frame #8: 0x00000006e758f5ee WebCore`WebCore::DocumentTimeline::resolveAnimationsForElement(this=0x00000006fd0af300, element=0x0000000702f00138, targetStyle=0x0000000701a70d80) at DocumentTimeline.cpp:465
    frame #9: 0x00000006e90a132b WebCore`WebCore::Style::TreeResolver::createAnimatedElementUpdate(this=0x00007ffee6d32f00, newStyle=unique_ptr<WebCore::RenderStyle, std::__1::default_delete<WebCore::RenderStyle> > @ 0x00007ffee6d2fac0, element=0x0000000702f00138, parentChange=NoChange) at StyleTreeResolver.cpp:309
    frame #10: 0x00000006e90a0547 WebCore`WebCore::Style::TreeResolver::resolveElement(this=0x00007ffee6d32f00, element=0x0000000702f00138) at StyleTreeResolver.cpp:213
    frame #11: 0x00000006e90a3084 WebCore`WebCore::Style::TreeResolver::resolveComposedTree(this=0x00007ffee6d32f00) at StyleTreeResolver.cpp:498
    frame #12: 0x00000006e90a48f1 WebCore`WebCore::Style::TreeResolver::resolve(this=0x00007ffee6d32f00) at StyleTreeResolver.cpp:556
    frame #13: 0x00000006e7afef65 WebCore`WebCore::Document::resolveStyle(this=0x0000000701c02120, type=Normal) at Document.cpp:1904
    frame #14: 0x00000006e7b00a8d WebCore`WebCore::Document::updateStyleIfNeeded(this=0x0000000701c02120) at Document.cpp:2025
    frame #15: 0x00000006e758d5a8 WebCore`WebCore::DocumentTimeline::updateAnimations(this=0x00000006fd0af300) at DocumentTimeline.cpp:322
    frame #16: 0x00000006e758b3e5 WebCore`WebCore::DocumentTimeline::documentAnimationSchedulerDidFire(this=0x00000006fd0af300) at DocumentTimeline.cpp:292
    frame #17: 0x00000006e758b31f WebCore`WebCore::DocumentAnimationScheduler::displayRefreshFired(this=0x0000000701a7a888) at DocumentAnimationScheduler.cpp:89

In the bad case, we never even hit updateListOfElementsWithRunningAcceleratedAnimationsForElement().

Good:

14:53:53.138 78416   GraphicsLayerCA 0x17f7d58c0 platformCALayerAnimationEnded keyframe-effect-13c65603-c439-4b93-9e1f-3f4dcadd4590_2_0_0
14:53:53.138 78416   DocumentAnimationScheduler 0x183f2c8f8 displayRefreshFired()
14:53:53.138 78416   DocumentTimeline 0x17f5c9300 updateAnimations()
14:53:53.138 78416    updating style
14:53:53.138 78416   DocumentTimeline 0x17f5c9300 updateListOfElementsWithRunningAcceleratedAnimationsForElement 0x1860009c0
14:53:53.138 78416   DocumentTimeline 0x17f5c9300 runningAnimationsForElementAreAllAccelerated 0x1860009c0: 0
14:53:53.138 78416   RenderLayerModelObject 0x187300fc0 (layer 0x185b9e690) styleDidChange diff 8 opacity 1 (requires layer 0)
14:53:53.138 78416   DocumentTimeline 0x17f5c9300 runningAnimationsForElementAreAllAccelerated 0x1860009c0: 0
14:53:53.138 78416   RenderLayer 0x185b9e690 removeOnlyThisLayer
14:53:53.138 78416   RenderLayer 0x185b9ed20 updateLayerPositionsAfterLayout

Bad:

14:53:54.557 78416   GraphicsLayerCA 0x17f7c58c0 platformCALayerAnimationEnded keyframe-effect-ffa21c3c-149f-43ee-ad47-184ef4d9227a_2_0_0
14:53:54.557 78416   DocumentAnimationScheduler 0x185ba4ce8 displayRefreshFired()
14:53:54.557 78416   DocumentTimeline 0x183f72c00 updateAnimations()
14:53:54.557 78416    updating style
14:53:54.557 78416   DocumentTimeline 0x183f72c00 runningAnimationsForElementAreAllAccelerated 0x186000af8: 1
14:53:54.557 78416   RenderLayerModelObject 0x1873018c0 (layer 0x17f574e70) styleDidChange diff 8 opacity 1 (requires layer 1)
14:53:54.558 78416   DocumentTimeline 0x183f72c00 runningAnimationsForElementAreAllAccelerated 0x186000af8: 1
14:53:54.558 78416   RenderLayer 0x17f574e70 styleChanged - opacity is 1.000000
14:53:54.558 78416   DocumentTimeline 0x183f72c00 runningAnimationsForElementAreAllAccelerated 0x186000af8: 1

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20181017/36535c58/attachment.html>


More information about the webkit-unassigned mailing list