Closed Bug 1491000 Opened 6 years ago Closed 3 years ago

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)

defect

Tracking

()

RESOLVED FIXED
Tracking Status
firefox64 --- wontfix
firefox65 --- wontfix
firefox66 --- wontfix
firefox67 --- wontfix

People

(Reporter: truber, Unassigned)

References

(Blocks 4 open bugs)

Details

(Keywords: assertion, crash, testcase)

Attachments

(1 file, 1 obsolete file)

Attached file test.html (obsolete) (deleted) —
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
Priority: -- → P2
Priority: P2 → P3
Flags: needinfo?(kats)
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.
Flags: needinfo?(kats)
Blocks: stage-wr-next
No longer blocks: stage-wr-trains
Attached file testcase.html (deleted) —

This test case is hitting the same assertion but is also crashing in non-debug builds.

Attachment #9008737 - Attachment is obsolete: true
Blocks: 1587369

Please let me know if a Pernosco session would be helpful and I will attach one.

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.

Flags: needinfo?(twsmith)

I am unable to reproduce the issue with the attached test case. Also I do not see the expected assertion message in stderr.

Flags: needinfo?(twsmith)

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.

Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: