Closed Bug 1753779 Opened 3 years ago Closed 3 years ago

Assertion failure: false (Two layers that scroll together have different ancestor transforms), at src/gfx/layers/apz/src/APZCTreeManager.cpp:1343

Categories

(Core :: Panning and Zooming, defect, P3)

defect

Tracking

()

VERIFIED FIXED
100 Branch
Tracking Status
firefox-esr91 --- unaffected
firefox98 --- wontfix
firefox99 --- wontfix
firefox100 --- verified

People

(Reporter: tsmith, Assigned: botond)

References

(Blocks 2 open bugs, Regression)

Details

(Keywords: assertion, regression, testcase, Whiteboard: [bugmon:bisected,confirmed])

Attachments

(2 files)

Attached file testcase.html

Found while fuzzing 20220131-788ab1920ef8 (--enable-debug --enable-fuzzing)

To reproduce via Grizzly Replay:

$ pip install fuzzfetch grizzly-framework
$ python -m fuzzfetch -d --fuzzing -n firefox
$ python -m grizzly.replay ./firefox/firefox testcase.html

Assertion failure: false (Two layers that scroll together have different ancestor transforms), at src/gfx/layers/apz/src/APZCTreeManager.cpp:1343

#0 0x7fe1a3214f1b in mozilla::layers::APZCTreeManager::PrepareNodeForLayer(mozilla::RecursiveMutexAutoLock const&, mozilla::layers::WebRenderScrollDataWrapper const&, mozilla::layers::FrameMetrics const&, mozilla::layers::LayersId, mozilla::Maybe<mozilla::layers::ZoomConstraints> const&, mozilla::layers::AncestorTransform const&, mozilla::layers::HitTestingTreeNode*, mozilla::layers::HitTestingTreeNode*, mozilla::layers::APZCTreeManager::TreeBuildingState&) src/gfx/layers/apz/src/APZCTreeManager.cpp:1341:9
#1 0x7fe1a3206d6c in operator() src/gfx/layers/apz/src/APZCTreeManager.cpp:490:38
#2 0x7fe1a3206d6c in std::enable_if<(std::is_same_v<decltype(fp0(fp)), void>) && (std::is_same_v<decltype(fp1(fp)), void>), void>::type mozilla::layers::ForEachNode<mozilla::layers::ReverseIterator, mozilla::layers::WebRenderScrollDataWrapper, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_3, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_4>(mozilla::layers::WebRenderScrollDataWrapper, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_3 const&, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_4 const&) src/gfx/layers/TreeTraversal.h:139:3
#3 0x7fe1a3207c71 in std::enable_if<(std::is_same_v<decltype(fp0(fp)), void>) && (std::is_same_v<decltype(fp1(fp)), void>), void>::type mozilla::layers::ForEachNode<mozilla::layers::ReverseIterator, mozilla::layers::WebRenderScrollDataWrapper, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_3, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_4>(mozilla::layers::WebRenderScrollDataWrapper, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_3 const&, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_4 const&) src/gfx/layers/TreeTraversal.h:143:5
#4 0x7fe1a3207c71 in std::enable_if<(std::is_same_v<decltype(fp0(fp)), void>) && (std::is_same_v<decltype(fp1(fp)), void>), void>::type mozilla::layers::ForEachNode<mozilla::layers::ReverseIterator, mozilla::layers::WebRenderScrollDataWrapper, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_3, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_4>(mozilla::layers::WebRenderScrollDataWrapper, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_3 const&, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_4 const&) src/gfx/layers/TreeTraversal.h:143:5
#5 0x7fe1a3207c71 in std::enable_if<(std::is_same_v<decltype(fp0(fp)), void>) && (std::is_same_v<decltype(fp1(fp)), void>), void>::type mozilla::layers::ForEachNode<mozilla::layers::ReverseIterator, mozilla::layers::WebRenderScrollDataWrapper, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_3, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_4>(mozilla::layers::WebRenderScrollDataWrapper, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_3 const&, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_4 const&) src/gfx/layers/TreeTraversal.h:143:5
#6 0x7fe1a3207c71 in std::enable_if<(std::is_same_v<decltype(fp0(fp)), void>) && (std::is_same_v<decltype(fp1(fp)), void>), void>::type mozilla::layers::ForEachNode<mozilla::layers::ReverseIterator, mozilla::layers::WebRenderScrollDataWrapper, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_3, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_4>(mozilla::layers::WebRenderScrollDataWrapper, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_3 const&, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_4 const&) src/gfx/layers/TreeTraversal.h:143:5
#7 0x7fe1a3207c71 in std::enable_if<(std::is_same_v<decltype(fp0(fp)), void>) && (std::is_same_v<decltype(fp1(fp)), void>), void>::type mozilla::layers::ForEachNode<mozilla::layers::ReverseIterator, mozilla::layers::WebRenderScrollDataWrapper, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_3, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_4>(mozilla::layers::WebRenderScrollDataWrapper, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_3 const&, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_4 const&) src/gfx/layers/TreeTraversal.h:143:5
#8 0x7fe1a3207c71 in std::enable_if<(std::is_same_v<decltype(fp0(fp)), void>) && (std::is_same_v<decltype(fp1(fp)), void>), void>::type mozilla::layers::ForEachNode<mozilla::layers::ReverseIterator, mozilla::layers::WebRenderScrollDataWrapper, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_3, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_4>(mozilla::layers::WebRenderScrollDataWrapper, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_3 const&, mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::$_4 const&) src/gfx/layers/TreeTraversal.h:143:5
#9 0x7fe1a3204dcf in mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int) src/gfx/layers/apz/src/APZCTreeManager.cpp:449:5
#10 0x7fe1a3278a52 in operator() src/gfx/layers/apz/src/APZUpdater.cpp:196:25
#11 0x7fe1a3278a52 in mozilla::detail::RunnableFunction<mozilla::layers::APZUpdater::UpdateScrollDataAndTreeState(mozilla::layers::LayersId, mozilla::layers::LayersId, mozilla::wr::Epoch const&, mozilla::layers::WebRenderScrollData&&)::$_28>::Run() /builds/worker/workspace/obj-build/dist/include/nsThreadUtils.h:531:5
#12 0x7fe1a3237adf in mozilla::layers::APZUpdater::ProcessQueue() src/gfx/layers/apz/src/APZUpdater.cpp:459:23
#13 0x7fe1a323733a in mozilla::layers::APZUpdater::CompleteSceneSwap(mozilla::wr::WrWindowId const&, mozilla::wr::WrPipelineInfo const&) src/gfx/layers/apz/src/APZUpdater.cpp:121:12
#14 0x7fe1a323a669 in apz_post_scene_swap src/gfx/layers/apz/src/APZUpdater.cpp:527:3
#15 0x7fe1aa44ba66 in _$LT$webrender_bindings..bindings..APZCallbacks$u20$as$u20$webrender..renderer..SceneBuilderHooks$GT$::post_scene_swap::h99b4a35edfd47fac src/gfx/webrender_bindings/src/bindings.rs:1007:13
#16 0x7fe1aa6207e6 in webrender::scene_builder_thread::SceneBuilderThread::forward_built_transactions::hced81e3e9d38f922 src/gfx/wr/webrender/src/scene_builder_thread.rs:719:13
#17 0x7fe1aa6207e6 in webrender::scene_builder_thread::SceneBuilderThread::run::h45b090d72f48c5aa src/gfx/wr/webrender/src/scene_builder_thread.rs:319:21
#18 0x7fe1aa487acc in webrender::renderer::Renderer::new::_$u7b$$u7b$closure$u7d$$u7d$::h469494766b3f2339 src/gfx/wr/webrender/src/renderer/mod.rs:1237:13
#19 0x7fe1aa487acc in std::sys_common::backtrace::__rust_begin_short_backtrace::h63344c73c15b1fb6 /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/sys_common/backtrace.rs:123:18
#20 0x7fe1aa49e90f in std::thread::Builder::spawn_unchecked::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::hf19578ef60059335 /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/thread/mod.rs:484:17
#21 0x7fe1aa49e90f in _$LT$core..panic..unwind_safe..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$$LP$$RP$$GT$$GT$::call_once::hdb0819c851d490fe /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/core/src/panic/unwind_safe.rs:271:9
#22 0x7fe1aa49e90f in std::panicking::try::do_call::h63584cd89793bc1f /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/panicking.rs:406:40
#23 0x7fe1aa49e90f in std::panicking::try::hff613628669c8e52 /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/panicking.rs:370:19
#24 0x7fe1aa49e90f in std::panic::catch_unwind::h6e8d64f13444060b /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/panic.rs:133:14
#25 0x7fe1aa49e90f in std::thread::Builder::spawn_unchecked::_$u7b$$u7b$closure$u7d$$u7d$::hc25c5a7224576747 /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/thread/mod.rs:483:30
#26 0x7fe1aa49e90f in core::ops::function::FnOnce::call_once$u7b$$u7b$vtable.shim$u7d$$u7d$::h9c8fe4302e41b559 /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/core/src/ops/function.rs:227:5
#27 0x7fe1ab34b4c2 in _$LT$alloc..boxed..Box$LT$F$C$A$GT$$u20$as$u20$core..ops..function..FnOnce$LT$Args$GT$$GT$::call_once::h3604301cdaaa9dbf /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/alloc/src/boxed.rs:1694:9
#28 0x7fe1ab34b4c2 in _$LT$alloc..boxed..Box$LT$F$C$A$GT$$u20$as$u20$core..ops..function..FnOnce$LT$Args$GT$$GT$::call_once::h4cf736d2de892eff /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/alloc/src/boxed.rs:1694:9
#29 0x7fe1ab34b4c2 in std::sys::unix::thread::Thread::new::thread_start::h71a82d4ee5b02c9b /rustc/02072b482a8b5357f7fb5e5637444ae30e423c40/library/std/src/sys/unix/thread.rs:106:17
#30 0x7fe1b79c6608 in start_thread /build/glibc-eX1tMB/glibc-2.31/nptl/pthread_create.c:477:8
#31 0x7fe1b758e292 in __clone /build/glibc-eX1tMB/glibc-2.31/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Flags: in-testsuite?

I don't think that's the right stack.

Flags: needinfo?(twsmith)

(In reply to Timothy Nikkel (:tnikkel) from comment #1)

I don't think that's the right stack.

Fixed, thank you.

Flags: needinfo?(twsmith)

A Pernosco session is available here: https://pernos.co/debug/XCPtj93FO6rdYJXowh_qtg/index.html

Bugmon Analysis
Verified bug as reproducible on mozilla-central 20220205014840-e8991d00a1d1.
The bug appears to have been introduced in the following build range:

Start: 3a83a5c25a2ed0b73f616f9def2f1e738a90ce90 (20210819033348)
End: 33fca42928519b723ac6efd93c4ffb69f569e23f (20210819044300)
Pushlog: https://hg.mozilla.org/mozilla-unified/pushloghtml?fromchange=3a83a5c25a2ed0b73f616f9def2f1e738a90ce90&tochange=33fca42928519b723ac6efd93c4ffb69f569e23f

Whiteboard: [bugmon:bisected,confirmed]

WRScrollData tree:

--- WebRenderScrollData (firstPaint=1) ---
WebRenderLayerScrollData(0x7ff7ae4c1008), descendantCount=8), item=0, visible=[]
    WebRenderLayerScrollData(0x7ff7ae4c1198), descendantCount=7), item=0x7ff7ae4b6068, visible=[]
        WebRenderLayerScrollData(0x7ff7ae4c1c88), descendantCount=0), item=0x7ff7ae4b51a8, metadata0={ [metrics={ [cb=(x=0, y=0, w=1280, h=887)] [sr=(x=0, y=0, w=1280, h=887)] [s=(0,0)] [dp=(x=0, y=0, w=1280, h=887)] [cdp=(x=0, y=0, w=0, h=0)] [rcs=(1280 x 887)] [v=(x=0, y=0, w=1280, h=887)] [z=(ld=1.000 r=1.000 cr=1 z=1 t=1 )] [u=(0 1)] scrollId=2 [rcd] }] [color=dev_rgba(255, 255, 255, 1.000000)] [overscroll=auto] [1 scrollupdates] }, visible=[]
        WebRenderLayerScrollData(0x7ff7ae4c1968), descendantCount=1), item=0x7ff7ae4b5ec0, metadata0={ [metrics={ [cb=(x=0, y=0, w=1280, h=887)] [sr=(x=0, y=0, w=1280, h=887)] [s=(0,0)] [dp=(x=0, y=0, w=1280, h=887)] [cdp=(x=0, y=0, w=0, h=0)] [rcs=(1280 x 887)] [v=(x=0, y=0, w=1280, h=887)] [z=(ld=1.000 r=1.000 cr=1 z=1 t=1 )] [u=(0 1)] scrollId=2 [rcd] }] [color=dev_rgba(255, 255, 255, 1.000000)] [overscroll=auto] [1 scrollupdates] }, ancestorTransform=[ 1 0; 0 1; 8 32; ] (asr=2), visible=[]
            WebRenderLayerScrollData(0x7ff7ae4c1af8), descendantCount=0), item=0x7ff7ae4b5820, metadata0={ [metrics={ [cb=(x=0, y=0, w=1252, h=18.0667)] [sr=(x=0, y=0, w=1252, h=26.0667)] [s=(0,0)] [dp=(x=0, y=0, w=1252, h=26.0667)] [cdp=(x=0, y=0, w=0, h=0)] [rcs=(1280 x 887)] [v=(x=0, y=0, w=1252, h=18.0667)] [z=(ld=1.000 r=1.000 cr=1 z=1 t=1 )] [u=(0 2)] scrollId=3 }] [color=dev_rgba(0, 0, 0, 0.000000)] [scrollParent=2] [overscroll=auto] [1 scrollupdates] }, visible=[]
        WebRenderLayerScrollData(0x7ff7ae4c1328), descendantCount=3), item=0x7ff7ae4b5c70, metadata0={ [metrics={ [cb=(x=0, y=0, w=1280, h=887)] [sr=(x=0, y=0, w=1280, h=887)] [s=(0,0)] [dp=(x=0, y=0, w=1280, h=887)] [cdp=(x=0, y=0, w=0, h=0)] [rcs=(1280 x 887)] [v=(x=0, y=0, w=1280, h=887)] [z=(ld=1.000 r=1.000 cr=1 z=1 t=1 )] [u=(0 1)] scrollId=2 [rcd] }] [color=dev_rgba(255, 255, 255, 1.000000)] [overscroll=auto] [1 scrollupdates] }, ancestorTransform=[ 1 0; 0 1; 8 32; ] (asr=2), visible=[]
            WebRenderLayerScrollData(0x7ff7ae4c1648), descendantCount=1), item=0x7ff7ae4b5ec0, ancestorTransform=[ 1 0; 0 1; 8 32; ] (asr=2), visible=[]
                WebRenderLayerScrollData(0x7ff7ae4c17d8), descendantCount=0), item=0x7ff7ae4b5b30, metadata0={ [metrics={ [cb=(x=0, y=0, w=1252, h=18.0667)] [sr=(x=0, y=0, w=1252, h=26.0667)] [s=(0,0)] [dp=(x=0, y=0, w=1252, h=26.0667)] [cdp=(x=0, y=0, w=0, h=0)] [rcs=(1280 x 887)] [v=(x=0, y=0, w=1252, h=18.0667)] [z=(ld=1.000 r=1.000 cr=1 z=1 t=1 )] [u=(0 2)] scrollId=3 }] [color=dev_rgba(0, 0, 0, 0.000000)] [scrollParent=2] [overscroll=auto] [1 scrollupdates] }, visible=[]
            WebRenderLayerScrollData(0x7ff7ae4c14b8), descendantCount=0), item=0x7ff7ae4b5bd0, ancestorTransform=[ 1 0; 0 1; 8 32; ] (asr=2), visible=[]

Both the node 0x7ff7ae4c1328, and its children, have ancestorTransform=[ 1 0; 0 1; 8 32; ], but there's only one transform item in the display list, so it's the same transform being incorrectly emitted on multiple nodes in a parent chain.

And here's the display list it's based on:

  SolidColor p=0x7ff7ae4b6218 f=0x7ff7ae44a020(Viewport(-1)) key=53 bounds(0,0,76800,53220) componentAlpha(0,0,0,0) clip() asr() clipChain() uniform  (opaque 0,0,76800,53220) (rgba 255,255,255,255)
  CompositorHitTestInfo p=0x7ff7ae4b5020 f=0x7ff7ae44a1a8(HTMLScroll(html)(-1)) key=25 bounds(0,0,0,0) componentAlpha(0,0,0,0) clip() asr() clipChain()  hitTestInfo(0x1) hitTestArea(0,0,76800,53220)
  AsyncZoom p=0x7ff7ae4b6068 f=0x7ff7ae44a1a8(HTMLScroll(html)(-1)) key=2 bounds(0,0,76800,53220) componentAlpha(0,0,0,0) clip(0,0,76800,53220) asr() clipChain(0x7ff7ae4b5160 <0,0,76800,53220> [root asr])  (opaque 0,0,76800,53220) (flags 0x0) (scrolltarget 0)
    CanvasBackgroundColor p=0x7ff7ae4b51a8 f=0x7ff7ae44a0c8(Canvas(html)(-1)) key=16 bounds(0,0,76800,53220) componentAlpha(0,0,0,0) clip(0,0,76800,53220) asr(<0x7ff7ae44a248>) clipChain(0x7ff7ae4b5248 <0,0,76800,53220> [0x7ff7ae44a248], 0x7ff7ae4b5160 <0,0,76800,53220> [root asr]) uniform  (opaque 0,0,76800,53220) (rgba 255,255,255,255)
    CompositorHitTestInfo p=0x7ff7ae4b50c0 f=0x7ff7ae44a0c8(Canvas(html)(-1)) key=281 bounds(0,0,0,0) componentAlpha(0,0,0,0) clip() asr(<0x7ff7ae44a248>) clipChain(0x7ff7ae4b5160 <0,0,76800,53220> [root asr])  hitTestInfo(0x1) hitTestArea(0,0,76800,53220)
    CompositorHitTestInfo p=0x7ff7ae4b5290 f=0x7ff7ae44aae0(Block(html)(-1)) key=25 bounds(0,0,0,0) componentAlpha(0,0,0,0) clip(0,0,76800,53220) asr(<0x7ff7ae44a248>) clipChain(0x7ff7ae4b5248 <0,0,76800,53220> [0x7ff7ae44a248], 0x7ff7ae4b5160 <0,0,76800,53220> [root asr])  hitTestInfo(0x1) hitTestArea(0,0,76800,4924)
    CompositorHitTestInfo p=0x7ff7ae4b5330 f=0x7ff7ae44aba8(Block(body)(1)) key=25 bounds(0,0,0,0) componentAlpha(0,0,0,0) clip(0,0,76800,53220) asr(<0x7ff7ae44a248>) clipChain(0x7ff7ae4b5248 <0,0,76800,53220> [0x7ff7ae44a248], 0x7ff7ae4b5160 <0,0,76800,53220> [root asr])  hitTestInfo(0x1) hitTestArea(480,1920,75840,1084)
    nsDisplayTransform p=0x7ff7ae4b5ec0 f=0x7ff7ae44acc0(Block(h1 id=a)(0) id:a) key=73 bounds(480,1920,0,0) componentAlpha(0,0,0,0) clip(0,0,76800,53220) asr(<0x7ff7ae44a248>) clipChain(0x7ff7ae4b5248 <0,0,76800,53220> [0x7ff7ae44a248], 0x7ff7ae4b5160 <0,0,76800,53220> [root asr]) [ 1 0; 0 1; 8 32; ] prerender(no) childrenBuildingRect(x=0, y=-777, w=75840, h=2341)
      CompositorHitTestInfo p=0x7ff7ae4b53d0 f=0x7ff7ae44acc0(Block(h1 id=a)(0) id:a) key=25 bounds(0,0,0,0) componentAlpha(0,0,0,0) clip() asr(<0x7ff7ae44a248>) clipChain()  hitTestInfo(0x1) hitTestArea(0,0,75840,1084)
      Opacity p=0x7ff7ae4b5d98 f=0x7ff7ae44ad88(HTMLScroll(ol)(1) class:b) key=43 bounds(0,0,0,0) componentAlpha(0,0,0,0) clip() asr(<0x7ff7ae44a248>) clipChain()  (opacity 0, mChildOpacityState: Unknown)
        CompositorHitTestInfo p=0x7ff7ae4b5470 f=0x7ff7ae44ad88(HTMLScroll(ol)(1) class:b) key=25 bounds(0,0,0,0) componentAlpha(0,0,0,0) clip() asr(<0x7ff7ae44a248>) clipChain()  hitTestInfo(0x1) hitTestArea(0,0,75840,1084)
        CompositorHitTestInfo p=0x7ff7ae4b5510 f=0x7ff7ae44b2e8(ScrollbarFrame(scrollbar)(-1)) key=25 bounds(0,0,0,0) componentAlpha(0,0,0,0) clip() asr(<0x7ff7ae44a248>) clipChain()  hitTestInfo(0x509) hitTestArea(75120,0,720,1084)
        CompositorHitTestInfo p=0x7ff7ae4b55b0 f=0x7ff7ae44b408(SliderFrame(slider)(-1)) key=25 bounds(0,0,0,0) componentAlpha(0,0,0,0) clip() asr(<0x7ff7ae44a248>) clipChain()  hitTestInfo(0x509) hitTestArea(75120,0,720,1084)
        CompositorHitTestInfo p=0x7ff7ae4b5820 f=0x7ff7ae44b6c0(Block(ol)(1) class:b) key=281 bounds(0,0,0,0) componentAlpha(0,0,0,0) clip() asr(<0x7ff7ae44ae28>, <0x7ff7ae44a248>) clipChain(0x7ff7ae4b58c0 <0,0,75120,1084> [0x7ff7ae44a248])  hitTestInfo(0x1) hitTestArea(0,0,75120,1564)
        CompositorHitTestInfo p=0x7ff7ae4b5908 f=0x7ff7ae44b6c0(Block(ol)(1) class:b) key=25 bounds(0,0,0,0) componentAlpha(0,0,0,0) clip(0,0,75120,1564) asr(<0x7ff7ae44ae28>, <0x7ff7ae44a248>) clipChain(0x7ff7ae4b59a8 <0,0,75120,1564> [0x7ff7ae44ae28], 0x7ff7ae4b58c0 <0,0,75120,1084> [0x7ff7ae44a248])  hitTestInfo(0x1) hitTestArea(0,0,75120,1564)
        CompositorHitTestInfo p=0x7ff7ae4b59f0 f=0x7ff7ae44b788(Block(li)(1)) key=25 bounds(0,0,0,0) componentAlpha(0,0,0,0) clip(0,0,75120,1564) asr(<0x7ff7ae44ae28>, <0x7ff7ae44a248>) clipChain(0x7ff7ae4b59a8 <0,0,75120,1564> [0x7ff7ae44ae28], 0x7ff7ae4b58c0 <0,0,75120,1084> [0x7ff7ae44a248])  hitTestInfo(0x1) hitTestArea(2400,0,72720,1084)
        CompositorHitTestInfo p=0x7ff7ae4b5a90 f=0x7ff7ae44b850(Block(_moz_generated_content_marker)(-1)) key=25 bounds(0,0,0,0) componentAlpha(0,0,0,0) clip(0,0,75120,1564) asr(<0x7ff7ae44ae28>, <0x7ff7ae44a248>) clipChain(0x7ff7ae4b59a8 <0,0,75120,1564> [0x7ff7ae44ae28], 0x7ff7ae4b58c0 <0,0,75120,1084> [0x7ff7ae44a248])  hitTestInfo(0x1) hitTestArea(-272,0,2672,787)
        Opacity p=0x7ff7ae4b5c70 f=0x7ff7ae44baa8(Inline(label)(1) class:b) key=43 bounds(0,0,0,0) componentAlpha(0,0,0,0) clip() asr(<0x7ff7ae44a248>) clipChain()  (opacity 0, mChildOpacityState: Unknown)
          CompositorHitTestInfo p=0x7ff7ae4b5b30 f=0x7ff7ae44baa8(Inline(label)(1) class:b) key=25 bounds(0,0,0,0) componentAlpha(0,0,0,0) clip(0,0,75120,1564) asr(<0x7ff7ae44ae28>, <0x7ff7ae44a248>) clipChain(0x7ff7ae4b59a8 <0,0,75120,1564> [0x7ff7ae44ae28], 0x7ff7ae4b58c0 <0,0,75120,1084> [0x7ff7ae44a248])  hitTestInfo(0x1) hitTestArea(0,0,0,0)
          CompositorHitTestInfo p=0x7ff7ae4b5bd0 f=0x7ff7ae44bbf0(Block(menu)(1)) key=25 bounds(0,0,0,0) componentAlpha(0,0,0,0) clip() asr(<0x7ff7ae44a248>) clipChain()  hitTestInfo(0x1) hitTestArea(2400,0,3545,787)

I'm momentarily at a loss as to what is supposed to prevent a deferred transform from being emitted on multiple nodes in a parent chain in the first place... but I also think that if nothing is preventing that then we would be seeing issues like this much more often, so I feel like I'm missing something.

Hmm, maybe because if we are creating a WebRenderLayerScrollData at all then either UpdateScrollData returned true, we have a different asr, or we have a new deferred transform item with a different asr. So to have the situation you describe we'd need to keep the same asr, so UpdateScrollData has to return true and keep the same asr?

The severity field is not set for this bug.
:botond, could you have a look please?

For more information, please visit auto_nag documentation.

Flags: needinfo?(botond)
Severity: -- → S3
Flags: needinfo?(botond)
Priority: -- → P3

(In reply to Timothy Nikkel (:tnikkel) from comment #8)

Hmm, maybe because if we are creating a WebRenderLayerScrollData at all then either UpdateScrollData returned true, we have a different asr, or we have a new deferred transform item with a different asr. So to have the situation you describe we'd need to keep the same asr, so UpdateScrollData has to return true and keep the same asr?

I think you're right, and I think that suggests that a fairly straightforward check to prevent deferred transforms from being emitted multiple times in a parent chain would be an appropriate fix here.

Assignee: nobody → botond
Status: NEW → ASSIGNED
Blocks: 1751788

:botond, since this bug contains a bisection range, could you fill (if possible) the regressed_by field?
For more information, please visit auto_nag documentation.

Flags: needinfo?(botond)
Flags: needinfo?(botond)
Regressed by: 1726450

Set release status flags based on info from the regressing bug 1726450

Pushed by bballo@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/40024584d021 Avoid emitting the same deferred transform item onto an ancestor and descendant WebRenderLayerScrollData node. r=tnikkel
Status: ASSIGNED → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 100 Branch

Bugmon Analysis
Verified bug as fixed on rev mozilla-central 20220316095231-4d80f4e1809a.
Removing bugmon keyword as no further action possible. Please review the bug and re-add the keyword for further analysis.

Status: RESOLVED → VERIFIED
Keywords: bugmon
Flags: in-testsuite? → in-testsuite+
Blocks: 1696661
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: