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)
Tracking
()
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)
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
Reporter | ||
Comment 2•1 year ago
•
|
||
(In reply to Timothy Nikkel (:tnikkel) from comment #1)
I don't think that's the right stack.
Fixed, thank you.
Reporter | ||
Comment 3•1 year ago
|
||
A Pernosco session is available here: https://pernos.co/debug/XCPtj93FO6rdYJXowh_qtg/index.html
Comment 4•1 year ago
|
||
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
Assignee | ||
Comment 5•1 year ago
|
||
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.
Assignee | ||
Comment 6•1 year ago
|
||
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)
Assignee | ||
Comment 7•1 year ago
|
||
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.
Comment 8•1 year ago
|
||
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?
Comment 9•1 year ago
|
||
The severity field is not set for this bug.
:botond, could you have a look please?
For more information, please visit auto_nag documentation.
Assignee | ||
Updated•1 year ago
|
Assignee | ||
Comment 10•1 year ago
|
||
(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 | ||
Comment 11•1 year ago
|
||
Updated•1 year ago
|
Comment 12•1 year ago
|
||
: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.
Comment 13•1 year ago
|
||
Set release status flags based on info from the regressing bug 1726450
Comment 14•1 year ago
|
||
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
Comment 15•1 year ago
|
||
bugherder |
Comment 16•1 year ago
|
||
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.
Updated•1 year ago
|
Updated•11 months ago
|
Description
•