Assertion failure: false (Two layers that scroll together have different ancestor transforms), at /builds/worker/workspace/build/src/gfx/layers/apz/src/APZCTreeManager.cpp:1087
Categories
(Core :: Graphics: WebRender, defect, P3)
Tracking
()
People
(Reporter: truber, Unassigned)
References
(Blocks 3 open bugs)
Details
(Keywords: assertion, crash, testcase)
Attachments
(1 file, 1 obsolete file)
216 bytes,
text/html
|
Details |
The attached testcase causes an assertion in m-c 20180913-efccb758c78c. It looks similar to bug 1450686, but that testcase doesn't assert with WebRender enabled, and this one doesn't assert without WebRender enabled. Assertion failure: false (Two layers that scroll together have different ancestor transforms), at /builds/worker/workspace/build/src/gfx/layers/apz/src/APZCTreeManager.cpp:1087 #0: mozilla::layers::HitTestingTreeNode* mozilla::layers::APZCTreeManager::PrepareNodeForLayer<mozilla::layers::WebRenderScrollDataWrapper>(mozilla::RecursiveMutexAutoLock const&, mozilla::layers::WebRenderScrollDataWrapper const&, mozilla::layers::FrameMetrics const&, mozilla::layers::LayersId, mozilla::layers::AncestorTransform const&, mozilla::layers::HitTestingTreeNode*, mozilla::layers::HitTestingTreeNode*, mozilla::layers::APZCTreeManager::TreeBuildingState&) at gfx/layers/apz/src/APZCTreeManager.cpp:996 #2: mozilla::layers::ForEachNode<mozilla::layers::ReverseIterator, mozilla::layers::WebRenderScrollDataWrapper, mozilla::layers::APZCTreeManager::UpdateHitTestingTreeImpl(mozilla::layers::LayersId, const ScrollNode&, bool, mozilla::layers::LayersId, uint32_t) [with ScrollNode = mozilla::layers::WebRenderScrollDataWrapper]::<lambda(mozilla::layers::WebRenderScrollDataWrapper)>, mozilla::layers::APZCTreeManager::UpdateHitTestingTreeImpl(mozilla::layers::LayersId, const ScrollNode&, bool, mozilla::layers::LayersId, uint32_t) [with ScrollNode = mozilla::layers::WebRenderScrollDataWrapper]::<lambda(mozilla::layers::WebRenderScrollDataWrapper)> > at gfx/layers/TreeTraversal.h:137 #3: mozilla::layers::ForEachNode<mozilla::layers::ReverseIterator, mozilla::layers::WebRenderScrollDataWrapper, mozilla::layers::APZCTreeManager::UpdateHitTestingTreeImpl(mozilla::layers::LayersId, const ScrollNode&, bool, mozilla::layers::LayersId, uint32_t) [with ScrollNode = mozilla::layers::WebRenderScrollDataWrapper]::<lambda(mozilla::layers::WebRenderScrollDataWrapper)>, mozilla::layers::APZCTreeManager::UpdateHitTestingTreeImpl(mozilla::layers::LayersId, const ScrollNode&, bool, mozilla::layers::LayersId, uint32_t) [with ScrollNode = mozilla::layers::WebRenderScrollDataWrapper]::<lambda(mozilla::layers::WebRenderScrollDataWrapper)> > at gfx/layers/TreeTraversal.h:142 #4: mozilla::layers::ForEachNode<mozilla::layers::ReverseIterator, mozilla::layers::WebRenderScrollDataWrapper, mozilla::layers::APZCTreeManager::UpdateHitTestingTreeImpl(mozilla::layers::LayersId, const ScrollNode&, bool, mozilla::layers::LayersId, uint32_t) [with ScrollNode = mozilla::layers::WebRenderScrollDataWrapper]::<lambda(mozilla::layers::WebRenderScrollDataWrapper)>, mozilla::layers::APZCTreeManager::UpdateHitTestingTreeImpl(mozilla::layers::LayersId, const ScrollNode&, bool, mozilla::layers::LayersId, uint32_t) [with ScrollNode = mozilla::layers::WebRenderScrollDataWrapper]::<lambda(mozilla::layers::WebRenderScrollDataWrapper)> > at gfx/layers/TreeTraversal.h:142 #5: mozilla::layers::ForEachNode<mozilla::layers::ReverseIterator, mozilla::layers::WebRenderScrollDataWrapper, mozilla::layers::APZCTreeManager::UpdateHitTestingTreeImpl(mozilla::layers::LayersId, const ScrollNode&, bool, mozilla::layers::LayersId, uint32_t) [with ScrollNode = mozilla::layers::WebRenderScrollDataWrapper]::<lambda(mozilla::layers::WebRenderScrollDataWrapper)>, mozilla::layers::APZCTreeManager::UpdateHitTestingTreeImpl(mozilla::layers::LayersId, const ScrollNode&, bool, mozilla::layers::LayersId, uint32_t) [with ScrollNode = mozilla::layers::WebRenderScrollDataWrapper]::<lambda(mozilla::layers::WebRenderScrollDataWrapper)> > at gfx/layers/TreeTraversal.h:142 #6: mozilla::layers::ForEachNode<mozilla::layers::ReverseIterator, mozilla::layers::WebRenderScrollDataWrapper, mozilla::layers::APZCTreeManager::UpdateHitTestingTreeImpl(mozilla::layers::LayersId, const ScrollNode&, bool, mozilla::layers::LayersId, uint32_t) [with ScrollNode = mozilla::layers::WebRenderScrollDataWrapper]::<lambda(mozilla::layers::WebRenderScrollDataWrapper)>, mozilla::layers::APZCTreeManager::UpdateHitTestingTreeImpl(mozilla::layers::LayersId, const ScrollNode&, bool, mozilla::layers::LayersId, uint32_t) [with ScrollNode = mozilla::layers::WebRenderScrollDataWrapper]::<lambda(mozilla::layers::WebRenderScrollDataWrapper)> > at gfx/layers/TreeTraversal.h:142 #7: void mozilla::layers::APZCTreeManager::UpdateHitTestingTreeImpl<mozilla::layers::WebRenderScrollDataWrapper>(mozilla::layers::LayersId, mozilla::layers::WebRenderScrollDataWrapper const&, bool, mozilla::layers::LayersId, unsigned int) at gfx/layers/apz/src/APZCTreeManager.cpp:406 #8: mozilla::detail::RunnableFunction<mozilla::layers::APZUpdater::UpdateScrollDataAndTreeState(mozilla::layers::LayersId, mozilla::layers::LayersId, const Epoch&, mozilla::layers::WebRenderScrollData&&)::<lambda()> >::Run at gfx/layers/apz/src/APZUpdater.cpp:230 #9: mozilla::layers::APZUpdater::ProcessQueue() at gfx/layers/apz/src/APZUpdater.cpp:515 #10: mozilla::layers::APZUpdater::CompleteSceneSwap(mozilla::wr::WrWindowId const&, mozilla::wr::WrPipelineInfo const&) at gfx/layers/apz/src/APZUpdater.cpp:130 #11: apz_post_scene_swap at gfx/layers/apz/src/APZUpdater.cpp:574 #12: <webrender_bindings::bindings::APZCallbacks as webrender::renderer::SceneBuilderHooks>::post_scene_swap at gfx/webrender_bindings/src/bindings.rs:743 #13: webrender::scene_builder::SceneBuilder::run at gfx/webrender/src/scene_builder.rs:384 #14: std::sys_common::backtrace::__rust_begin_short_backtrace at gfx/webrender/src/renderer.rs:1695 #15: std::panicking::try::do_call at src/libstd/thread/mod.rs:409 #16: __rust_maybe_catch_panic at src/libpanic_abort/lib.rs:39 #17: <F as alloc::boxed::FnBox<A>>::call_box at src/libstd/panicking.rs:289 #18: std::sys_common::thread::start_thread at src/liballoc/boxed.rs:650 #19: std::sys::unix::thread::Thread::new::thread_start at src/libstd/sys/unix/thread.rs:90
Updated•6 years ago
|
Updated•6 years ago
|
Updated•6 years ago
|
Comment 1•6 years ago
|
||
This is a debug assertion so it shouldn't be crashing for end users. But it might result in some weird scrolling behaviour if we run into similar display list structure on real-world pages. I'll basically need to debug it fully in order to understand what's causing it and what the impact would be. Let's leave it P3 for now, we can promote it to P2 eventually and investigate.
Updated•5 years ago
|
Comment 2•5 years ago
|
||
This test case is hitting the same assertion but is also crashing in non-debug builds.
Updated•5 years ago
|
Comment 3•5 years ago
|
||
Please let me know if a Pernosco session would be helpful and I will attach one.
Comment 4•3 years ago
|
||
I can't reproduce this one any more, either.
Tyson, are you able to confirm this? Note that in bug 1673492, we downgraded the assertion from being fatal in debug mode (MOZ_ASSERT
) to non-fatal (NS_ASSERTION
), but I'm not seeing it at all.
Comment 5•3 years ago
|
||
I am unable to reproduce the issue with the attached test case. Also I do not see the expected assertion message in stderr.
Comment 6•3 years ago
|
||
Thanks for the confirmation.
It would be interesting to know what fixed this, but as it requires a debug build to reproduce, and we only seem to keep debug nightlies going back ~1 year, I wasn't able to find out using mozregression (it was fixed prior to that), so I'll just close this.
Updated•3 years ago
|
Description
•