Open Bug 1648628 Opened 2 years ago Updated 2 years ago

Assertion failure: false (Duplicate display item!), at src/layout/painting/nsDisplayList.cpp:150

Categories

(Core :: Web Painting, defect, P3)

defect

Tracking

()

Tracking Status
firefox78 --- affected
firefox79 --- affected

People

(Reporter: tsmith, Unassigned)

References

(Blocks 1 open bug)

Details

(Keywords: assertion, crash)

I am unable to get a reliable reduced test case for this issue.

Assertion failure: false (Duplicate display item!), at /builds/worker/checkouts/gecko/layout/painting/nsDisplayList.cpp:150

#0 0x7fd90a06c3fc in AssertUniqueItem(nsDisplayItem*) /gecko/layout/painting/nsDisplayList.cpp:150:7
#1 0x7fd9099ddc31 in MakeDisplayItemWithIndex<mozilla::css::nsDisplayTextOverflowMarker, nsIFrame, nsRect &, int, const mozilla::StyleTextOverflowSide> /gecko/layout/painting/nsDisplayList.h:2134:5
#2 0x7fd9099ddc31 in void nsDisplayList::AppendNewToTopWithIndex<mozilla::css::nsDisplayTextOverflowMarker, nsIFrame, nsRect&, int, mozilla::StyleTextOverflowSide const>(nsDisplayListBuilder*, nsIFrame*, unsigned short, nsRect&, int&&, mozilla::StyleTextOverflowSide const&&) /gecko/layout/painting/nsDisplayList.h:3386:27
#3 0x7fd9099dcc79 in mozilla::css::TextOverflow::CreateMarkers(nsLineBox const*, bool, bool, mozilla::LogicalRect const&, mozilla::LogicalRect const&, unsigned int) /gecko/layout/generic/TextOverflow.cpp:906:17
#4 0x7fd9099db0d5 in mozilla::css::TextOverflow::ProcessLine(nsDisplayListSet const&, nsLineBox*, unsigned int) /gecko/layout/generic/TextOverflow.cpp:769:3
#5 0x7fd909a2221f in DisplayLine(nsDisplayListBuilder*, nsLineList_iterator&, bool, nsDisplayListSet const&, nsBlockFrame*, mozilla::css::TextOverflow*, unsigned int, int, int&) /gecko/layout/generic/nsBlockFrame.cpp:6847:20
#6 0x7fd909a2049b in nsBlockFrame::BuildDisplayList(nsDisplayListBuilder*, nsDisplayListSet const&) /gecko/layout/generic/nsBlockFrame.cpp:6999:9
#7 0x7fd909ac65c3 in nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder*, nsIFrame*, nsDisplayListSet const&, unsigned int) /gecko/layout/generic/nsFrame.cpp:4240:14
#8 0x7fd909a44a87 in nsColumnSetFrame::BuildDisplayList(nsDisplayListBuilder*, nsDisplayListSet const&) /gecko/layout/generic/nsColumnSetFrame.cpp:1257:5
#9 0x7fd909ac65c3 in nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder*, nsIFrame*, nsDisplayListSet const&, unsigned int) /gecko/layout/generic/nsFrame.cpp:4240:14
#10 0x7fd909a221b5 in DisplayLine(nsDisplayListBuilder*, nsLineList_iterator&, bool, nsDisplayListSet const&, nsBlockFrame*, mozilla::css::TextOverflow*, unsigned int, int, int&) /gecko/layout/generic/nsBlockFrame.cpp:6842:13
#11 0x7fd909a2049b in nsBlockFrame::BuildDisplayList(nsDisplayListBuilder*, nsDisplayListSet const&) /gecko/layout/generic/nsBlockFrame.cpp:6999:9
#12 0x7fd909abb902 in nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder*, nsDisplayList*, bool*) /gecko/layout/generic/nsFrame.cpp:3418:5
#13 0x7fd909ac6091 in nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder*, nsIFrame*, nsDisplayListSet const&, unsigned int) /gecko/layout/generic/nsFrame.cpp:4201:12
#14 0x7fd909a380d3 in nsCanvasFrame::BuildDisplayList(nsDisplayListBuilder*, nsDisplayListSet const&) /gecko/layout/generic/nsCanvasFrame.cpp:615:5
#15 0x7fd909ac65c3 in nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder*, nsIFrame*, nsDisplayListSet const&, unsigned int) /gecko/layout/generic/nsFrame.cpp:4240:14
#16 0x7fd909b41a4e in mozilla::ScrollFrameHelper::BuildDisplayList(nsDisplayListBuilder*, nsDisplayListSet const&) /gecko/layout/generic/nsGfxScrollFrame.cpp:3692:15
#17 0x7fd909ac65c3 in nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder*, nsIFrame*, nsDisplayListSet const&, unsigned int) /gecko/layout/generic/nsFrame.cpp:4240:14
#18 0x7fd9099de1f5 in mozilla::ViewportFrame::BuildDisplayList(nsDisplayListBuilder*, nsDisplayListSet const&) /gecko/layout/generic/ViewportFrame.cpp:62:5
#19 0x7fd909abb902 in nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder*, nsDisplayList*, bool*) /gecko/layout/generic/nsFrame.cpp:3418:5
#20 0x7fd90990d9f2 in nsLayoutUtils::PaintFrame(gfxContext*, nsIFrame*, nsRegion const&, unsigned int, nsDisplayListBuilderMode, nsLayoutUtils::PaintFrameFlags) /gecko/layout/base/nsLayoutUtils.cpp:4041:17
#21 0x7fd909824bd9 in mozilla::PresShell::Paint(nsView*, nsRegion const&, mozilla::PaintFlags) /gecko/layout/base/PresShell.cpp:6326:5
#22 0x7fd90925bd7e in nsViewManager::ProcessPendingUpdatesPaint(nsIWidget*) /gecko/view/nsViewManager.cpp:460:18
#23 0x7fd90925b43d in nsViewManager::ProcessPendingUpdatesForView(nsView*, bool) /gecko/view/nsViewManager.cpp:395:22
#24 0x7fd90925dd0d in nsViewManager::ProcessPendingUpdates() /gecko/view/nsViewManager.cpp:1018:5
#25 0x7fd9097a25d7 in nsRefreshDriver::Tick(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp) /gecko/layout/base/nsRefreshDriver.cpp:2195:11
#26 0x7fd9097aea06 in TickDriver /gecko/layout/base/nsRefreshDriver.cpp:373:13
#27 0x7fd9097aea06 in mozilla::RefreshDriverTimer::TickRefreshDrivers(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp, nsTArray<RefPtr<nsRefreshDriver> >&) /gecko/layout/base/nsRefreshDriver.cpp:350:7
#28 0x7fd9097ae605 in mozilla::RefreshDriverTimer::Tick(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp) /gecko/layout/base/nsRefreshDriver.cpp:367:5
#29 0x7fd9097bd972 in RunRefreshDrivers /gecko/layout/base/nsRefreshDriver.cpp:819:5
#30 0x7fd9097bd972 in mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::TickRefreshDriver(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp) /gecko/layout/base/nsRefreshDriver.cpp:737:16
#31 0x7fd9097bcd6b in mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::NotifyParentProcessVsync() /gecko/layout/base/nsRefreshDriver.cpp:639:7
#32 0x7fd9097ab9f2 in mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::ParentProcessVsyncNotifier::Run() /gecko/layout/base/nsRefreshDriver.cpp:538:20
#33 0x7fd900d77e88 in nsThread::ProcessNextEvent(bool, bool*) /gecko/xpcom/threads/nsThread.cpp:1236:14
#34 0x7fd900d82aac in NS_ProcessNextEvent(nsIThread*, bool) /gecko/xpcom/threads/nsThreadUtils.cpp:501:10
#35 0x7fd9020f94bf in mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) /gecko/ipc/glue/MessagePump.cpp:87:21
#36 0x7fd901fd8737 in RunInternal /gecko/ipc/chromium/src/base/message_loop.cc:315:10
#37 0x7fd901fd8737 in RunHandler /gecko/ipc/chromium/src/base/message_loop.cc:308:3
#38 0x7fd901fd8737 in MessageLoop::Run() /gecko/ipc/chromium/src/base/message_loop.cc:290:3
#39 0x7fd9093061b8 in nsBaseAppShell::Run() /gecko/widget/nsBaseAppShell.cpp:137:27
#40 0x7fd90ceaf286 in XRE_RunAppShell() /gecko/toolkit/xre/nsEmbedFunctions.cpp:913:20
#41 0x7fd901fd8737 in RunInternal /gecko/ipc/chromium/src/base/message_loop.cc:315:10
#42 0x7fd901fd8737 in RunHandler /gecko/ipc/chromium/src/base/message_loop.cc:308:3
#43 0x7fd901fd8737 in MessageLoop::Run() /gecko/ipc/chromium/src/base/message_loop.cc:290:3
#44 0x7fd90ceae86f in XRE_InitChildProcess(int, char**, XREChildData const*) /gecko/toolkit/xre/nsEmbedFunctions.cpp:744:34
#45 0x5573d22fc793 in content_process_main /gecko/browser/app/../../ipc/contentproc/plugin-container.cpp:56:28
#46 0x5573d22fc793 in main /gecko/browser/app/nsBrowserApp.cpp:303:18

A Pernosco session is available here: https://pernos.co/debug/2ePzrK6aRLebk8YlC-65JA/index.html

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

For more information, please visit auto_nag documentation.

Flags: needinfo?(matt.woodrow)

Oh dear, this is overflowing the 16bit integer we have for indexes.

DisplayLine is being called with line number is 32771, which we then left shift and add 1.

Miko, how sad would you be to go back to 32bit indexes?

Flags: needinfo?(matt.woodrow) → needinfo?(mikokm)

(In reply to Matt Woodrow (:mattwoodrow) (PTO until 9th Sept) from comment #3)

Oh dear, this is overflowing the 16bit integer we have for indexes.

DisplayLine is being called with line number is 32771, which we then left shift and add 1.

Miko, how sad would you be to go back to 32bit indexes?

Not too sad, I have hopes that we can completely replace and simplify this system at some point by introducing rolling unique ids for display items.

Flags: needinfo?(mikokm)
Severity: -- → S3
Priority: -- → P3
You need to log in before you can comment on or make changes to this bug.