Open Bug 1466224 Opened 2 years ago Updated 9 months ago

Assertion failure: GetApzc()->GetParent() == aParent, at /buildssrc/gfx/layers/apz/src/HitTestingTreeNode.cpp:406

Categories

(Core :: Layout: Scrolling and Overflow, defect, P3)

defect

Tracking

()

Tracking Status
firefox61 --- wontfix
firefox62 --- wontfix
firefox65 --- wontfix
firefox66 --- affected
firefox67 --- affected

People

(Reporter: tsmith, Unassigned)

References

(Blocks 2 open bugs)

Details

(Keywords: assertion, testcase, Whiteboard: [gfx-noted])

Attachments

(2 files)

Attached file testcase.html
Reduced with m-c:
BuildID=20180531100449
SourceStamp=763f30c3421233a45ef9e67a695c5c241a2c8a3a

Assertion failure: GetApzc()->GetParent() == aParent, at /buildssrc/gfx/layers/apz/src/HitTestingTreeNode.cpp:406

#0 mozilla::layers::HitTestingTreeNode::SetApzcParent(mozilla::layers::AsyncPanZoomController*) /buildssrc/gfx/layers/apz/src/HitTestingTreeNode.cpp:406:5
#1 mozilla::layers::HitTestingTreeNode* mozilla::layers::APZCTreeManager::PrepareNodeForLayer<mozilla::layers::LayerMetricsWrapper>(mozilla::RecursiveMutexAutoLock const&, mozilla::layers::LayerMetricsWrapper const&, mozilla::layers::FrameMetrics const&, mozilla::layers::LayersId, mozilla::layers::AncestorTransform const&, mozilla::layers::HitTestingTreeNode*, mozilla::layers::HitTestingTreeNode*, mozilla::layers::APZCTreeManager::TreeBuildingState&) /buildssrc/gfx/layers/apz/src/APZCTreeManager.cpp:1050:5
#2 void mozilla::layers::APZCTreeManager::UpdateHitTestingTreeImpl<mozilla::layers::LayerMetricsWrapper>(mozilla::layers::LayersId, mozilla::layers::LayerMetricsWrapper const&, bool, mozilla::layers::LayersId, unsigned int)::{lambda(mozilla::layers::LayerMetricsWrapper)#1}::operator()(mozilla::layers::LayerMetricsWrapper) const /buildssrc/gfx/layers/apz/src/APZCTreeManager.cpp:410:38
#3 _ZN7mozilla6layersL11ForEachNodeINS0_15ReverseIteratorENS0_19LayerMetricsWrapperEZNS0_15APZCTreeManager24UpdateHitTestingTreeImplIS3_EEvNS0_8LayersIdERKT_bS6_jEUlS3_E_ZNS5_IS3_EEvS6_S9_bS6_jEUlS3_E0_EENS_8EnableIfIXaasr6IsSameIDTclfp0_fp_EEvEE5valuesr6IsSameIDTclfp1_fp_EEvEE5valueEvE4TypeET0_RKT1_RKT2_ /buildssrc/gfx/layers/TreeTraversal.h:137:3
#4 _ZN7mozilla6layersL11ForEachNodeINS0_15ReverseIteratorENS0_19LayerMetricsWrapperEZNS0_15APZCTreeManager24UpdateHitTestingTreeImplIS3_EEvNS0_8LayersIdERKT_bS6_jEUlS3_E_ZNS5_IS3_EEvS6_S9_bS6_jEUlS3_E0_EENS_8EnableIfIXaasr6IsSameIDTclfp0_fp_EEvEE5valuesr6IsSameIDTclfp1_fp_EEvEE5valueEvE4TypeET0_RKT1_RKT2_ /buildssrc/gfx/layers/TreeTraversal.h:142:5
#5 _ZN7mozilla6layersL11ForEachNodeINS0_15ReverseIteratorENS0_19LayerMetricsWrapperEZNS0_15APZCTreeManager24UpdateHitTestingTreeImplIS3_EEvNS0_8LayersIdERKT_bS6_jEUlS3_E_ZNS5_IS3_EEvS6_S9_bS6_jEUlS3_E0_EENS_8EnableIfIXaasr6IsSameIDTclfp0_fp_EEvEE5valuesr6IsSameIDTclfp1_fp_EEvEE5valueEvE4TypeET0_RKT1_RKT2_ /buildssrc/gfx/layers/TreeTraversal.h:142:5
#6 _ZN7mozilla6layersL11ForEachNodeINS0_15ReverseIteratorENS0_19LayerMetricsWrapperEZNS0_15APZCTreeManager24UpdateHitTestingTreeImplIS3_EEvNS0_8LayersIdERKT_bS6_jEUlS3_E_ZNS5_IS3_EEvS6_S9_bS6_jEUlS3_E0_EENS_8EnableIfIXaasr6IsSameIDTclfp0_fp_EEvEE5valuesr6IsSameIDTclfp1_fp_EEvEE5valueEvE4TypeET0_RKT1_RKT2_ /buildssrc/gfx/layers/TreeTraversal.h:142:5
#7 _ZN7mozilla6layersL11ForEachNodeINS0_15ReverseIteratorENS0_19LayerMetricsWrapperEZNS0_15APZCTreeManager24UpdateHitTestingTreeImplIS3_EEvNS0_8LayersIdERKT_bS6_jEUlS3_E_ZNS5_IS3_EEvS6_S9_bS6_jEUlS3_E0_EENS_8EnableIfIXaasr6IsSameIDTclfp0_fp_EEvEE5valuesr6IsSameIDTclfp1_fp_EEvEE5valueEvE4TypeET0_RKT1_RKT2_ /buildssrc/gfx/layers/TreeTraversal.h:142:5
#8 _ZN7mozilla6layersL11ForEachNodeINS0_15ReverseIteratorENS0_19LayerMetricsWrapperEZNS0_15APZCTreeManager24UpdateHitTestingTreeImplIS3_EEvNS0_8LayersIdERKT_bS6_jEUlS3_E_ZNS5_IS3_EEvS6_S9_bS6_jEUlS3_E0_EENS_8EnableIfIXaasr6IsSameIDTclfp0_fp_EEvEE5valuesr6IsSameIDTclfp1_fp_EEvEE5valueEvE4TypeET0_RKT1_RKT2_ /buildssrc/gfx/layers/TreeTraversal.h:142:5
#9 void mozilla::layers::APZCTreeManager::UpdateHitTestingTreeImpl<mozilla::layers::LayerMetricsWrapper>(mozilla::layers::LayersId, mozilla::layers::LayerMetricsWrapper const&, bool, mozilla::layers::LayersId, unsigned int) /buildssrc/gfx/layers/apz/src/APZCTreeManager.cpp:405:5
#10 mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::LayersId, mozilla::layers::Layer*, bool, mozilla::layers::LayersId, unsigned int) /buildssrc/gfx/layers/apz/src/APZCTreeManager.cpp:576:3
#11 mozilla::layers::CompositorBridgeParent::NotifyShadowTreeTransaction(mozilla::layers::LayersId, bool, mozilla::layers::FocusTarget const&, bool, unsigned int, bool, bool) /buildssrc/gfx/layers/ipc/CompositorBridgeParent.cpp:905:22
#12 mozilla::layers::CrossProcessCompositorBridgeParent::ShadowLayersUpdated(mozilla::layers::LayerTransactionParent*, mozilla::layers::TransactionInfo const&, bool) /buildssrc/gfx/layers/ipc/CrossProcessCompositorBridgeParent.cpp:354:19
#13 mozilla::layers::LayerTransactionParent::RecvUpdate(mozilla::layers::TransactionInfo const&) /buildssrc/gfx/layers/ipc/LayerTransactionParent.cpp:458:22
#14 mozilla::layers::PLayerTransactionParent::OnMessageReceived(IPC::Message const&) /buildssrc/obj-firefox/ipc/ipdl/PLayerTransactionParent.cpp:112:20
#15 mozilla::layers::PCompositorManagerParent::OnMessageReceived(IPC::Message const&) /buildssrc/obj-firefox/ipc/ipdl/PCompositorManagerParent.cpp:110:28
#16 mozilla::ipc::MessageChannel::DispatchAsyncMessage(IPC::Message const&) /buildssrc/ipc/glue/MessageChannel.cpp:2136:25
#17 mozilla::ipc::MessageChannel::DispatchMessage(IPC::Message&&) /buildssrc/ipc/glue/MessageChannel.cpp:2066:17
#18 mozilla::ipc::MessageChannel::RunMessage(mozilla::ipc::MessageChannel::MessageTask&) /buildssrc/ipc/glue/MessageChannel.cpp:1912:5
#19 mozilla::ipc::MessageChannel::MessageTask::Run() /buildssrc/ipc/glue/MessageChannel.cpp:1945:15
#20 MessageLoop::RunTask(already_AddRefed<nsIRunnable>) /buildssrc/ipc/chromium/src/base/message_loop.cc:452:9
#21 MessageLoop::DeferOrRunPendingTask(MessageLoop::PendingTask&&) /buildssrc/ipc/chromium/src/base/message_loop.cc:460:5
#22 MessageLoop::DoWork() /buildssrc/ipc/chromium/src/base/message_loop.cc:535:13
#23 base::MessagePumpDefault::Run(base::MessagePump::Delegate*) /buildssrc/ipc/chromium/src/base/message_pump_default.cc:36:31
#24 MessageLoop::RunInternal() /buildssrc/ipc/chromium/src/base/message_loop.cc:326:10
#25 MessageLoop::Run() /buildssrc/ipc/chromium/src/base/message_loop.cc:299:3
#26 base::Thread::ThreadMain() /buildssrc/ipc/chromium/src/base/thread.cc:181:16
#27 ThreadFunc(void*) /buildssrc/ipc/chromium/src/base/platform_thread_posix.cc:38:13
#28 start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x76b9)
#29 clone /build/glibc-Cl5G7W/glibc-2.23/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:109
Flags: in-testsuite?
This appears to be coming down the HitTestingTreeNode::MakeRoot / APZCTreeManager::AttachNodeToTree path:

https://searchfox.org/mozilla-central/rev/55da592d85c2baf8d8818010c41d9738c97013d2/gfx/layers/apz/src/APZCTreeManager.cpp#1056

Looks like the assert was added to this path in bug 1109873.
Depends on: 1109873
Flags: needinfo?(botond)
Priority: -- → P3
Whiteboard: [gfx-noted]
This is likely a dupe of bug 1458145. Getting a layer tree dump will confirm.
Blocks: 1109873
No longer depends on: 1109873
(In reply to Kartikaya Gupta (email:kats@mozilla.com) (parental leave) from comment #2)
> This is likely a dupe of bug 1458145. Getting a layer tree dump will confirm.

It's similar to bug 1458145 in that Layout is sending us a malformed layer tree, but the way in which the layer tree is malformed is different.

In bug 1458145, a layer and its descendant both had scroll metadata with the same scroll id.

Here, a layer (0x7f3b7f02d800) has three scroll metadata, with the second one having scrollId=5, and a sibling layer (0x7f3b7f02dc00) has one scroll metadata with scrollId=5. As a result, conflicting scroll parents are computed for scrollId=5.
Blocks: APZLayout
Component: Graphics: Layers → Layout: Scrolling and Overflow
You need to log in before you can comment on or make changes to this bug.