<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>102626</bug_id>
          
          <creation_ts>2012-11-18 17:47:46 -0800</creation_ts>
          <short_desc>Calling calculateCompositedBounds() inside recalcStyle() is bogus</short_desc>
          <delta_ts>2014-10-29 11:32:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>93542</dependson>
    
    <dependson>138179</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>bdakin</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>770244</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-18 17:47:46 -0800</bug_when>
    <thetext>RenderLayerCompositor::requiresCompositingForPosition() calls calculateCompositedBounds() to determine if the layer is inside the viewport.
However, we haven&apos;t done layout yet, so it&apos;s crazy to ask for layer dimensions at this point.

We need to do this by setting the m_reevaluateCompositingAfterLayout flag and only doing it once layout is complete.

Here&apos;s the bad stack:

    frame #6: 0x00000001045f7b0c WebCore`WebCore::RenderLayer::calculateLayerBounds(WebCore::RenderLayer const*, WebCore::LayoutPoint const*, unsigned int) const + 2172 at RenderLayer.cpp:4595
    frame #7: 0x000000010462b8eb WebCore`WebCore::RenderLayerCompositor::calculateCompositedBounds(WebCore::RenderLayer const*, WebCore::RenderLayer const*) const + 75 at RenderLayerCompositor.cpp:681
    frame #8: 0x000000010462f6ca WebCore`WebCore::RenderLayerCompositor::requiresCompositingForPosition(WebCore::RenderObject*, WebCore::RenderLayer const*) const + 426 at RenderLayerCompositor.cpp:1965
    frame #9: 0x000000010462aac5 WebCore`WebCore::RenderLayerCompositor::requiresCompositingLayer(WebCore::RenderLayer const*) const + 373 at RenderLayerCompositor.cpp:1560
    frame #10: 0x000000010462b3ed WebCore`WebCore::RenderLayerCompositor::needsToBeComposited(WebCore::RenderLayer const*) const + 77 at RenderLayerCompositor.cpp:1536
    frame #11: 0x000000010462af99 WebCore`WebCore::RenderLayerCompositor::updateBacking(WebCore::RenderLayer*, WebCore::RenderLayerCompositor::CompositingChangeRepaint) + 57 at RenderLayerCompositor.cpp:538
    frame #12: 0x000000010462b733 WebCore`WebCore::RenderLayerCompositor::updateLayerCompositingState(WebCore::RenderLayer*, WebCore::RenderLayerCompositor::CompositingChangeRepaint) + 35 at RenderLayerCompositor.cpp:624
    frame #13: 0x000000010460c822 WebCore`WebCore::RenderLayer::styleChanged(WebCore::StyleDifference, WebCore::RenderStyle const*) + 802 at RenderLayer.cpp:5114
    frame #14: 0x000000010463d54e WebCore`WebCore::RenderLayerModelObject::styleDidChange(WebCore::StyleDifference, WebCore::RenderStyle const*) + 558 at RenderLayerModelObject.cpp:160
    frame #15: 0x000000010455e586 WebCore`WebCore::RenderBox::styleDidChange(WebCore::StyleDifference, WebCore::RenderStyle const*) + 70 at RenderBox.cpp:209
    frame #16: 0x00000001044e4563 WebCore`WebCore::RenderBlock::styleDidChange(WebCore::StyleDifference, WebCore::RenderStyle const*) + 51 at RenderBlock.cpp:327
    frame #17: 0x000000010467a8c2 WebCore`WebCore::RenderObject::setStyle(WTF::PassRefPtr&lt;WebCore::RenderStyle&gt;) + 1522 at RenderObject.cpp:1792
    frame #18: 0x0000000104679faa WebCore`WebCore::RenderObject::setAnimatableStyle(WTF::PassRefPtr&lt;WebCore::RenderStyle&gt;) + 138 at RenderObject.cpp:1693
    frame #19: 0x000000010388c42e WebCore`WebCore::Element::recalcStyle(WebCore::Node::StyleChange) + 1374 at Element.cpp:1262
    frame #20: 0x000000010388c78f WebCore`WebCore::Element::recalcStyle(WebCore::Node::StyleChange) + 2239 at Element.cpp:1313
    frame #21: 0x000000010388c78f WebCore`WebCore::Element::recalcStyle(WebCore::Node::StyleChange) + 2239 at Element.cpp:1313
    frame #22: 0x000000010388c78f WebCore`WebCore::Element::recalcStyle(WebCore::Node::StyleChange) + 2239 at Element.cpp:1313
    frame #23: 0x000000010388c78f WebCore`WebCore::Element::recalcStyle(WebCore::Node::StyleChange) + 2239 at Element.cpp:1313
    frame #24: 0x000000010388c78f WebCore`WebCore::Element::recalcStyle(WebCore::Node::StyleChange) + 2239 at Element.cpp:1313
    frame #25: 0x000000010388c78f WebCore`WebCore::Element::recalcStyle(WebCore::Node::StyleChange) + 2239 at Element.cpp:1313
    frame #26: 0x000000010388c78f WebCore`WebCore::Element::recalcStyle(WebCore::Node::StyleChange) + 2239 at Element.cpp:1313
    frame #27: 0x000000010388c78f WebCore`WebCore::Element::recalcStyle(WebCore::Node::StyleChange) + 2239 at Element.cpp:1313
    frame #28: 0x000000010388c78f WebCore`WebCore::Element::recalcStyle(WebCore::Node::StyleChange) + 2239 at Element.cpp:1313
    frame #29: 0x000000010388c78f WebCore`WebCore::Element::recalcStyle(WebCore::Node::StyleChange) + 2239 at Element.cpp:1313
    frame #30: 0x0000000103680c24 WebCore`WebCore::Document::recalcStyle(WebCore::Node::StyleChange) + 1156 at Document.cpp:1859
    frame #31: 0x000000010367cd0c WebCore`WebCore::Document::updateStyleIfNeeded() + 396 at Document.cpp:1903
    frame #32: 0x0000000103681379 WebCore`WebCore::Document::updateLayout() + 153 at Document.cpp:1926
    frame #33: 0x00000001036814c5 WebCore`WebCore::Document::updateLayoutIgnorePendingStylesheets() + 197 at Document.cpp:1964
    frame #34: 0x0000000103a950c2 WebCore`WebCore::HTMLBodyElement::scrollLeft() + 34 at HTMLBodyElement.cpp:262
    frame #35: 0x0000000103eb883e WebCore`WebCore::jsElementScrollLeft(JSC::ExecState*, JSC::JSValue, JSC::PropertyName) + 78 at JSElement.cpp:387
    frame #36: 0x00000001023193e9 JavaScriptCore`JSC::PropertySlot::getValue(JSC::ExecState*, JSC::PropertyName) const + 249 at PropertySlot.h:76
    frame #37: 0x000000010232d0d2 JavaScriptCore`JSC::JSValue::get(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;) const + 242 at JSObject.h:1465
    frame #38: 0x00000001026f3451 JavaScriptCore`llint_slow_path_get_by_id + 241 at LLIntSlowPaths.cpp:917
    frame #39: 0x00000001026fc874 JavaScriptCore`llint_op_get_by_id + 122
(lldb)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779769</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-29 20:01:29 -0800</bug_when>
    <thetext>See also bug 93542.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>