Closed Bug 1393239 Opened 7 years ago Closed 2 years ago

Assertion failure: textRun (fail to build textrun?) in [@ LineBreakBefore]

Categories

(Core :: Layout, defect, P3)

defect

Tracking

()

RESOLVED WORKSFORME
Tracking Status
firefox-esr52 --- unaffected
firefox55 --- wontfix
firefox56 --- wontfix
firefox57 --- affected
firefox58 --- affected

People

(Reporter: tsmith, Unassigned)

References

(Blocks 1 open bug)

Details

(Keywords: assertion, testcase)

Attachments

(1 file)

Attached file test_case.html
Assertion failure: textRun (fail to build textrun?), at /src/layout/generic/nsRubyBaseContainerFrame.cpp:82

#0 0x7f33b980cf60 in LineBreakBefore(nsIFrame*, mozilla::gfx::DrawTarget*, nsIFrame*, nsLineList_iterator const*) /src/layout/generic/nsRubyBaseContainerFrame.cpp:82:5
#1 0x7f33b980fa97 in nsRubyBaseContainerFrame::ReflowOneColumn(nsRubyBaseContainerFrame::RubyReflowInput const&, unsigned int, mozilla::RubyColumn const&, nsReflowStatus&) /src/layout/generic/nsRubyBaseContainerFrame.cpp:583:40
#2 0x7f33b980eb5b in nsRubyBaseContainerFrame::ReflowColumns(nsRubyBaseContainerFrame::RubyReflowInput const&, nsReflowStatus&) /src/layout/generic/nsRubyBaseContainerFrame.cpp:477:15
#3 0x7f33b980ded6 in nsRubyBaseContainerFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) /src/layout/generic/nsRubyBaseContainerFrame.cpp:389:11
#4 0x7f33b97c4b53 in nsLineLayout::ReflowFrame(nsIFrame*, nsReflowStatus&, mozilla::ReflowOutput*, bool&) /src/layout/generic/nsLineLayout.cpp:921:13
#5 0x7f33b9812d90 in nsRubyFrame::ReflowSegment(nsPresContext*, mozilla::ReflowInput const&, nsRubyBaseContainerFrame*, nsReflowStatus&) /src/layout/generic/nsRubyFrame.cpp:222:29
#6 0x7f33b98125fd in nsRubyFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) /src/layout/generic/nsRubyFrame.cpp:165:5
#7 0x7f33b96b64ba in nsContainerFrame::ReflowChild(nsIFrame*, nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, mozilla::WritingMode const&, mozilla::LogicalPoint const&, nsSize const&, unsigned int, nsReflowStatus&, nsOverflowContinuationTracker*) /src/layout/generic/nsContainerFrame.cpp:932:14
#8 0x7f33b988716d in nsDateTimeControlFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) /src/layout/forms/nsDateTimeControlFrame.cpp:259:5
#9 0x7f33b97c4b53 in nsLineLayout::ReflowFrame(nsIFrame*, nsReflowStatus&, mozilla::ReflowOutput*, bool&) /src/layout/generic/nsLineLayout.cpp:921:13
#10 0x7f33b97c3c25 in nsInlineFrame::ReflowInlineFrame(nsPresContext*, mozilla::ReflowInput const&, nsInlineFrame::InlineReflowInput&, nsIFrame*, nsReflowStatus&) /src/layout/generic/nsInlineFrame.cpp:797:15
#11 0x7f33b97c2e4b in nsInlineFrame::ReflowFrames(nsPresContext*, mozilla::ReflowInput const&, nsInlineFrame::InlineReflowInput&, mozilla::ReflowOutput&, nsReflowStatus&) /src/layout/generic/nsInlineFrame.cpp:680:7
#12 0x7f33b97c24a6 in nsInlineFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) /src/layout/generic/nsInlineFrame.cpp:459:3
#13 0x7f33b97c4b53 in nsLineLayout::ReflowFrame(nsIFrame*, nsReflowStatus&, mozilla::ReflowOutput*, bool&) /src/layout/generic/nsLineLayout.cpp:921:13
#14 0x7f33b9691ad7 in nsBlockFrame::ReflowInlineFrame(mozilla::BlockReflowInput&, nsLineLayout&, nsLineList_iterator, nsIFrame*, LineReflowStatus*) /src/layout/generic/nsBlockFrame.cpp:4218:15
#15 0x7f33b969033c in nsBlockFrame::DoReflowInlineFrames(mozilla::BlockReflowInput&, nsLineLayout&, nsLineList_iterator, nsFlowAreaRect&, int&, nsFloatManager::SavedState*, bool*, LineReflowStatus*, bool) /src/layout/generic/nsBlockFrame.cpp:4014:5
#16 0x7f33b9688a69 in nsBlockFrame::ReflowInlineFrames(mozilla::BlockReflowInput&, nsLineList_iterator, bool*) /src/layout/generic/nsBlockFrame.cpp:3888:9
#17 0x7f33b9682edb in nsBlockFrame::ReflowLine(mozilla::BlockReflowInput&, nsLineList_iterator, bool*) /src/layout/generic/nsBlockFrame.cpp:2871:5
#18 0x7f33b967a202 in nsBlockFrame::ReflowDirtyLines(mozilla::BlockReflowInput&) /src/layout/generic/nsBlockFrame.cpp:2407:7
#19 0x7f33b967537c in nsBlockFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) /src/layout/generic/nsBlockFrame.cpp:1233:3
#20 0x7f33b968dbba in nsBlockReflowContext::ReflowBlock(mozilla::LogicalRect const&, bool, nsCollapsingMargin&, int, bool, nsLineBox*, mozilla::ReflowInput&, nsReflowStatus&, mozilla::BlockReflowInput&) /src/layout/generic/nsBlockReflowContext.cpp:306:11
#21 0x7f33b9686a45 in nsBlockFrame::ReflowBlockFrame(mozilla::BlockReflowInput&, nsLineList_iterator, bool*) /src/layout/generic/nsBlockFrame.cpp:3519:11
#22 0x7f33b9682e8d in nsBlockFrame::ReflowLine(mozilla::BlockReflowInput&, nsLineList_iterator, bool*) /src/layout/generic/nsBlockFrame.cpp:2868:5
#23 0x7f33b967a202 in nsBlockFrame::ReflowDirtyLines(mozilla::BlockReflowInput&) /src/layout/generic/nsBlockFrame.cpp:2407:7
#24 0x7f33b967537c in nsBlockFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) /src/layout/generic/nsBlockFrame.cpp:1233:3
#25 0x7f33b96b64ba in nsContainerFrame::ReflowChild(nsIFrame*, nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, mozilla::WritingMode const&, mozilla::LogicalPoint const&, nsSize const&, unsigned int, nsReflowStatus&, nsOverflowContinuationTracker*) /src/layout/generic/nsContainerFrame.cpp:932:14
#26 0x7f33b96b5732 in nsCanvasFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) /src/layout/generic/nsCanvasFrame.cpp:753:5
#27 0x7f33b96b64ba in nsContainerFrame::ReflowChild(nsIFrame*, nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, mozilla::WritingMode const&, mozilla::LogicalPoint const&, nsSize const&, unsigned int, nsReflowStatus&, nsOverflowContinuationTracker*) /src/layout/generic/nsContainerFrame.cpp:932:14
#28 0x7f33b9756359 in nsHTMLScrollFrame::ReflowScrolledFrame(mozilla::ScrollReflowInput*, bool, bool, mozilla::ReflowOutput*, bool) /src/layout/generic/nsGfxScrollFrame.cpp:549:3
#29 0x7f33b97575e2 in nsHTMLScrollFrame::ReflowContents(mozilla::ScrollReflowInput*, mozilla::ReflowOutput const&) /src/layout/generic/nsGfxScrollFrame.cpp:661:3
#30 0x7f33b9759917 in nsHTMLScrollFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) /src/layout/generic/nsGfxScrollFrame.cpp:1037:3
#31 0x7f33b9664e7f in nsContainerFrame::ReflowChild(nsIFrame*, nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, int, int, unsigned int, nsReflowStatus&, nsOverflowContinuationTracker*) /src/layout/generic/nsContainerFrame.cpp:976:14
#32 0x7f33b9664472 in mozilla::ViewportFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) /src/layout/generic/ViewportFrame.cpp:332:7
#33 0x7f33b94d60fb in mozilla::PresShell::DoReflow(nsIFrame*, bool) /src/layout/base/PresShell.cpp:9340:11
#34 0x7f33b94e36e5 in mozilla::PresShell::ProcessReflowCommands(bool) /src/layout/base/PresShell.cpp:9513:24
#35 0x7f33b94e2d84 in mozilla::PresShell::DoFlushPendingNotifications(mozilla::ChangesToFlush) /src/layout/base/PresShell.cpp:4210:11
#36 0x7f33b9477eef in nsRefreshDriver::Tick(long, mozilla::TimeStamp) /src/layout/base/nsRefreshDriver.cpp:1956:16
#37 0x7f33b948114e in mozilla::RefreshDriverTimer::TickRefreshDrivers(long, mozilla::TimeStamp, nsTArray<RefPtr<nsRefreshDriver> >&) /src/layout/base/nsRefreshDriver.cpp:307:7
#38 0x7f33b9480f24 in mozilla::RefreshDriverTimer::Tick(long, mozilla::TimeStamp) /src/layout/base/nsRefreshDriver.cpp:328:5
#39 0x7f33b9484515 in mozilla::VsyncRefreshDriverTimer::RunRefreshDrivers(mozilla::TimeStamp) /src/layout/base/nsRefreshDriver.cpp:770:5
#40 0x7f33b94835b6 in mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::TickRefreshDriver(mozilla::TimeStamp) /src/layout/base/nsRefreshDriver.cpp:683:35
#41 0x7f33b947f527 in mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::ParentProcessVsyncNotifier::Run() /src/layout/base/nsRefreshDriver.cpp:529:20
#42 0x7f33b3bedf4a in nsThread::ProcessNextEvent(bool, bool*) /src/xpcom/threads/nsThread.cpp:1040:14
#43 0x7f33b3bf3010 in NS_ProcessNextEvent(nsIThread*, bool) /src/xpcom/threads/nsThreadUtils.cpp:521:10
#44 0x7f33b47534e5 in mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) /src/ipc/glue/MessagePump.cpp:97:21
#45 0x7f33b46a4897 in MessageLoop::RunInternal() /src/ipc/chromium/src/base/message_loop.cc:326:10
#46 0x7f33b46a4729 in MessageLoop::Run() /src/ipc/chromium/src/base/message_loop.cc:299:3
#47 0x7f33b8f7711a in nsBaseAppShell::Run() /src/widget/nsBaseAppShell.cpp:158:27
#48 0x7f33bc164ea1 in nsAppStartup::Run() /src/toolkit/components/startup/nsAppStartup.cpp:288:30
#49 0x7f33bc2c9a82 in XREMain::XRE_mainRun() /src/toolkit/xre/nsAppRunner.cpp:4646:22
#50 0x7f33bc2cb6ca in XREMain::XRE_main(int, char**, mozilla::BootstrapConfig const&) /src/toolkit/xre/nsAppRunner.cpp:4810:8
#51 0x7f33bc2cc5b8 in XRE_main(int, char**, mozilla::BootstrapConfig const&) /src/toolkit/xre/nsAppRunner.cpp:4905:21
#52 0x4ecb38 in do_main(int, char**, char**) /src/browser/app/nsBrowserApp.cpp:236:22
#53 0x4ec450 in main /src/browser/app/nsBrowserApp.cpp:309:16
#54 0x7f33d2aa182f in __libc_start_main /build/glibc-bfm8X4/glibc-2.23/csu/../csu/libc-start.c:291
#55 0x41e184 in _start (/home/user/workspace/browsers/m-c-1503498612-asan-debug/firefox+0x41e184)
Flags: in-testsuite?
Priority: -- → P3
Looks like the <ruby> is inside an <input>. I think it makes sense that text run cannot be created in that case. The question would actually be why the frame is created at all.
Initial regression range:
INFO: Last good revision: 001d49708a355c9b127fc338722959874cfc7552
INFO: First bad revision: 7abafd0fead900aec67b0de342f71ec856f561cf
INFO: Pushlog:
https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=001d49708a355c9b127fc338722959874cfc7552&tochange=7abafd0fead900aec67b0de342f71ec856f561cf

So it was enabling dom.forms.datetime by default that first exposed this assertion. Re-bisecting with the pref manually enabled was a dead-end, unfortunately, as it just wound up on when the datetime code first landed (bug 1286182). But maybe that at least helps point to an answer to the question in comment 1?
Blocks: 1366188
Has Regression Range: --- → yes
Severity: normal → S3

The fuzzers have not reported this since before 2018. Let's close this and reopen if needed.

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

Attachment

General

Created:
Updated:
Size: