<?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>282944</bug_id>
          
          <creation_ts>2024-11-11 11:09:09 -0800</creation_ts>
          <short_desc>LAYER_POSITIONS_ASSERT(m_repaintContainer == repaintContainer) on bbc.com</short_desc>
          <delta_ts>2024-11-15 00:33:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Compositing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Matt Woodrow">mattwoodrow</assigned_to>
          <cc>mattwoodrow</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2074319</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2024-11-11 11:09:09 -0800</bug_when>
    <thetext>Reloading bbc.com a few times in a Safari private window (not sure if relevant), I hit:
LAYER_POSITIONS_ASSERT(m_repaintContainer == repaintContainer);

    frame #0: 0x0000000300002ef8 WebCore`WTFCrashWithInfo(line=1219, file=&quot;/Volumes/Data/Development/system/webkit/OpenSource/Source/WebCore/rendering/RenderLayer.cpp&quot;, function=&quot;auto WebCore::RenderLayer::recursiveUpdateLayerPositions(RenderElement::LayoutIdentifier, OptionSet&lt;UpdateLayerPositionsFlag&gt;, CanUseSimplifiedRepaintPass)::(anonymous class)::operator()(bool) const&quot;, counter=4526) at Assertions.h:901:5
  * frame #1: 0x0000000306bfd930 WebCore`void WebCore::RenderLayer::recursiveUpdateLayerPositions&lt;(WebCore::RenderLayer::UpdateLayerPositionsMode)1&gt;(this=0x000000016f920880, checkForRepaint=true)::&apos;lambda&apos;(bool)::operator()(bool) const at RenderLayer.cpp:1219:13
    frame #2: 0x0000000306bfca54 WebCore`void WebCore::RenderLayer::recursiveUpdateLayerPositions&lt;(WebCore::RenderLayer::UpdateLayerPositionsMode)1&gt;(this=0x000000035b758230, layoutIdentifier=0, flags={ size = 2 }, canUseSimplifiedRepaintPass=No) at RenderLayer.cpp:1271:5
    frame #3: 0x0000000306bfd160 WebCore`void WebCore::RenderLayer::recursiveUpdateLayerPositions&lt;(WebCore::RenderLayer::UpdateLayerPositionsMode)1&gt;(this=0x000000035b7580c0, layoutIdentifier=0, flags={ size = 2 }, canUseSimplifiedRepaintPass=No) at RenderLayer.cpp:1322:20
    frame #4: 0x0000000306bfd160 WebCore`void WebCore::RenderLayer::recursiveUpdateLayerPositions&lt;(WebCore::RenderLayer::UpdateLayerPositionsMode)1&gt;(this=0x000000035b74fe90, layoutIdentifier=0, flags={ size = 2 }, canUseSimplifiedRepaintPass=No) at RenderLayer.cpp:1322:20
    frame #5: 0x0000000306bfd160 WebCore`void WebCore::RenderLayer::recursiveUpdateLayerPositions&lt;(WebCore::RenderLayer::UpdateLayerPositionsMode)1&gt;(this=0x000000035b74fbb0, layoutIdentifier=0, flags={ size = 1 }, canUseSimplifiedRepaintPass=No) at RenderLayer.cpp:1322:20
    frame #6: 0x0000000306bfd160 WebCore`void WebCore::RenderLayer::recursiveUpdateLayerPositions&lt;(WebCore::RenderLayer::UpdateLayerPositionsMode)1&gt;(this=0x000000014e002010, layoutIdentifier=0, flags={ size = 1 }, canUseSimplifiedRepaintPass=No) at RenderLayer.cpp:1322:20
    frame #7: 0x0000000306bfd160 WebCore`void WebCore::RenderLayer::recursiveUpdateLayerPositions&lt;(WebCore::RenderLayer::UpdateLayerPositionsMode)1&gt;(this=0x000000014e000e80, layoutIdentifier=0, flags={ size = 1 }, canUseSimplifiedRepaintPass=No) at RenderLayer.cpp:1322:20
    frame #8: 0x0000000306bc7ae0 WebCore`void WebCore::RenderLayer::recursiveUpdateLayerPositions&lt;(WebCore::RenderLayer::UpdateLayerPositionsMode)0&gt;(this=0x000000014e000e80, layoutIdentifier=0, flags={ size = 1 }, canUseSimplifiedRepaintPass=No) at RenderLayer.cpp:1132:9
    frame #9: 0x0000000306bc78a4 WebCore`WebCore::RenderLayer::updateLayerPositionsAfterStyleChange(this=0x000000014e000e80) at RenderLayer.cpp:1045:5
    frame #10: 0x0000000305d0202c WebCore`WebCore::LocalFrameView::updateCompositingLayersAfterStyleChange(this=0x000000014e000110) at LocalFrameView.cpp:775:26
    frame #11: 0x0000000304a90ee4 WebCore`WebCore::Document::resolveStyle(this={ origin = , url = , inMainFrame = Detached, backForwardCacheState = NotInBackForwardCache }, type=Normal) at Document.cpp:2605:47
    frame #12: 0x0000000304a91a64 WebCore`WebCore::Document::updateStyleIfNeeded(this={ origin = , url = , inMainFrame = Detached, backForwardCacheState = NotInBackForwardCache }) at Document.cpp:2703:5
    frame #13: 0x0000000304a91e68 WebCore`WebCore::Document::updateLayout(this={ origin = , url = , inMainFrame = Detached, backForwardCacheState = NotInBackForwardCache }, layoutOptions={ size = 1 }, context=0x0000000000000000) at Document.cpp:2747:13
    frame #14: 0x0000000305d1a5a4 WebCore`WebCore::LocalFrameView::updateLayoutAndStyleIfNeededRecursive(this=0x000000014e000110, layoutOptions={ size = 0 }) at LocalFrameView.cpp:4914:44
    frame #15: 0x0000000305d8c41c WebCore`WebCore::Page::layoutIfNeeded(this=0x0000000115051300, layoutOptions={ size = 0 }) at Page.cpp:1829:15
    frame #16: 0x0000000305d8d1bc WebCore`WebCore::Page::updateRendering(this=0x0000000115051300) at Page.cpp:1991:5
    frame #17: 0x000000011ac1224c WebKit`WebKit::WebPage::updateRendering(this=0x000000015c00b808) at WebPage.cpp:4998:13
    frame #18: 0x0000000117d50038 WebKit`WebKit::RemoteLayerTreeDrawingArea::updateRendering(this=0x0000000115048840) at RemoteLayerTreeDrawingArea.mm:343:14
    frame #19: 0x0000000117d56ea4 WebKit`WebCore::Timer::Timer&lt;WebKit::RemoteLayerTreeDrawingArea, WebKit::RemoteLayerTreeDrawingArea&gt;(this=0x00000001150957e8)())::&apos;lambda&apos;()::operator()() const at Timer.h:162:13
    frame #20: 0x0000000117d56d9c WebKit`WTF::Detail::CallableWrapper&lt;WebCore::Timer::Timer&lt;WebKit::RemoteLayerTreeDrawingArea, WebKit::RemoteLayerTreeDrawingArea&gt;(WebKit::RemoteLayerTreeDrawingArea&amp;, void (WebKit::RemoteLayerTreeDrawingArea::*)())::&apos;lambda&apos;(), void&gt;::call(this=0x00000001150957e0) at Function.h:53:39
    frame #21: 0x0000000116f89704 WebKit`WTF::Function&lt;void ()&gt;::operator()(this=0x0000000115048940) const at Function.h:82:35
    frame #22: 0x0000000117d5529c WebKit`WebCore::Timer::fired(this=0x0000000115048908) at Timer.h:194:9
    frame #23: 0x00000003060b3a58 WebCore`WebCore::ThreadTimers::sharedTimerFiredInternal(this=0x0000000115028810) at ThreadTimers.cpp:128:23
    frame #24: 0x00000003060bdf68 WebCore`WebCore::ThreadTimers::setSharedTimer(WebCore::SharedTimer*)::$_0::operator()(this=0x0000000115014a98) const at ThreadTimers.cpp:68:80
    frame #25: 0x00000003060bdf0c WebCore`WTF::Detail::CallableWrapper&lt;WebCore::ThreadTimers::setSharedTimer(WebCore::SharedTimer*)::$_0, void&gt;::call(this=0x0000000115014a90) at Function.h:53:39
    frame #26: 0x0000000300033614 WebCore`WTF::Function&lt;void ()&gt;::operator()(this=0x000000030a8a3d00) const at Function.h:82:35
    frame #27: 0x0000000306056cb0 WebCore`WebCore::MainThreadSharedTimer::fired(this=0x000000030a8a3cf8) at MainThreadSharedTimer.cpp:86:5
    frame #28: 0x0000000306179644 WebCore`WebCore::timerFired((null)=0x0000600000360600, (null)=0x0000000000000000) at MainThreadSharedTimerCF.cpp:85:40
    frame #29: 0x000000018ceda7a4 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 32</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2074320</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2024-11-11 11:09:40 -0800</bug_when>
    <thetext>I was at 286195@main</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2074639</commentid>
    <comment_count>2</comment_count>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2024-11-12 14:37:16 -0800</bug_when>
    <thetext>Looks like a bug in RenderLayerBacking::setBackingSharingLayers.

We call `compositingStatusChanged` on layers that no longer share to recompute their repaint rects, but we haven&apos;t yet called `clearBackingSharingLayerProviders` to disconnect them.

This results in the repaint rects being computed with the sharing layer as the repaint container still.

The RenderLayer mutation assertions catch this now, which is nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2075261</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-11-14 18:26:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/139930342&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2075262</commentid>
    <comment_count>4</comment_count>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2024-11-14 18:29:19 -0800</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/36675</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2075308</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-11-15 00:33:42 -0800</bug_when>
    <thetext>Committed 286633@main (9a66248c727c): &lt;https://commits.webkit.org/286633@main&gt;

Reviewed commits have been landed. Closing PR #36675 and removing active labels.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>