Closed Bug 2056633 Opened 1 month ago Closed 1 month ago

Assertion failure: IsTextInputScrolledContent(aBlockFrame->GetParent()), at checkouts/gecko/layout/generic/TextOverflow.cpp:841

Categories

(Core :: Layout, defect)

defect

Tracking

()

VERIFIED FIXED
155 Branch
Tracking Status
firefox-esr115 --- unaffected
firefox-esr140 --- unaffected
firefox-esr153 --- verified
firefox153 --- unaffected
firefox154 --- verified
firefox155 --- verified

People

(Reporter: tsmith, Assigned: emilio)

References

(Blocks 1 open bug, Regression)

Details

(4 keywords, Whiteboard: [fuzzblocker][bugmon:bisected,confirmed], [wptsync upstream])

Crash Data

Attachments

(4 files)

Attached file testcase.html

Found while fuzzing m-c 20260718-1d0f3519e526 (--enable-debug --enable-fuzzing)

To reproduce via Grizzly Replay:

$ pip install fuzzfetch grizzly-framework --upgrade
$ python -m fuzzfetch -d --fuzzing -n firefox
$ python -m grizzly.replay.bugzilla ./firefox/firefox <bugid>

Assertion failure: IsTextInputScrolledContent(aBlockFrame->GetParent()), at checkouts/gecko/layout/generic/TextOverflow.cpp:841

#0 0x75504a07cc18 in MOZ_CrashSequence /builds/worker/workspace/obj-build/dist/include/mozilla/Assertions.h:261:3
#1 0x75504a07cc18 in mozilla::css::TextOverflow::CanHaveOverflowMarkers(nsBlockFrame*, mozilla::css::TextOverflow::BeforeReflow) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/TextOverflow.cpp:841:5
#2 0x755049fdc700 in mozilla::BlockReflowState::BlockReflowState(mozilla::ReflowInput const&, nsPresContext*, nsBlockFrame*, bool, bool, bool, int, int, int) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/BlockReflowState.cpp:110:36
#3 0x75504a0965a3 in nsBlockFrame::TrialReflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsBlockFrame::TrialReflowState&) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/nsBlockFrame.cpp:2101:20
#4 0x75504a0939c2 in nsBlockFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/nsBlockFrame.cpp:1760:9
#5 0x75504a2c0d02 in nsLineLayout::ReflowFrame(nsIFrame*, nsReflowStatus&, mozilla::ReflowOutput*, bool&) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/nsLineLayout.cpp:863:13
#6 0x75504a0b885d in nsBlockFrame::ReflowInlineFrame(mozilla::BlockReflowState&, nsLineLayout&, GenericLineListIterator<nsLineLink, false>, nsIFrame*, LineReflowStatus*) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/nsBlockFrame.cpp:5511:15
#7 0x75504a0b67ec in nsBlockFrame::DoReflowInlineFrames(mozilla::BlockReflowState&, nsLineLayout&, GenericLineListIterator<nsLineLink, false>, nsFlowAreaRect&, int&, nsFloatManager::SavedState*, bool*, LineReflowStatus*, bool) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/nsBlockFrame.cpp:5310:5
#8 0x75504a0afc0d in nsBlockFrame::ReflowInlineFrames(mozilla::BlockReflowState&, GenericLineListIterator<nsLineLink, false>, bool*) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/nsBlockFrame.cpp:5167:9
#9 0x75504a0a8ffe in nsBlockFrame::ReflowLine(mozilla::BlockReflowState&, GenericLineListIterator<nsLineLink, false>, bool*) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/nsBlockFrame.cpp:4072:24
#10 0x75504a09d9db in nsBlockFrame::ReflowDirtyLines(mozilla::BlockReflowState&) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/nsBlockFrame.cpp:3577:29
#11 0x75504a0968db in nsBlockFrame::TrialReflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsBlockFrame::TrialReflowState&) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/nsBlockFrame.cpp:2149:35
#12 0x75504a0939c2 in nsBlockFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/nsBlockFrame.cpp:1760:9
#13 0x75504a10b38a in nsContainerFrame::ReflowChild(nsIFrame*, nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, mozilla::WritingMode const&, mozilla::LogicalPoint const&, nsSize const&, nsIFrame::ReflowChildFlags, nsReflowStatus&, nsOverflowContinuationTracker*) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/nsContainerFrame.cpp:713:14
#14 0x75504a0d70fa in nsColumnSetFrame::ReflowColumns(mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&, nsColumnSetFrame::ReflowConfig const&, bool) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/nsColumnSetFrame.cpp:701:7
#15 0x75504a0db37a in nsColumnSetFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/nsColumnSetFrame.cpp:1297:37
#16 0x75504a0b4364 in nsBlockReflowContext::ReflowBlock(mozilla::LogicalRect const&, bool, mozilla::CollapsingMargin&, int, nsLineBox*, mozilla::ReflowInput&, nsReflowStatus&, mozilla::BlockReflowState&) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/nsBlockReflowContext.cpp:289:11
#17 0x75504a0ac1fe in nsBlockFrame::ReflowBlockFrame(mozilla::BlockReflowState&, GenericLineListIterator<nsLineLink, false>, bool*) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/nsBlockFrame.cpp:4807:11
#18 0x75504a0a9141 in nsBlockFrame::ReflowLine(mozilla::BlockReflowState&, GenericLineListIterator<nsLineLink, false>, bool*) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/nsBlockFrame.cpp:4069:5
#19 0x75504a09d9db in nsBlockFrame::ReflowDirtyLines(mozilla::BlockReflowState&) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/nsBlockFrame.cpp:3577:29
#20 0x75504a0968db in nsBlockFrame::TrialReflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsBlockFrame::TrialReflowState&) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/nsBlockFrame.cpp:2149:35
#21 0x75504a0939c2 in nsBlockFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/nsBlockFrame.cpp:1760:9
#22 0x75504a10b38a in nsContainerFrame::ReflowChild(nsIFrame*, nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, mozilla::WritingMode const&, mozilla::LogicalPoint const&, nsSize const&, nsIFrame::ReflowChildFlags, nsReflowStatus&, nsOverflowContinuationTracker*) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/nsContainerFrame.cpp:713:14
#23 0x75504a02464c in mozilla::ScrollContainerFrame::ReflowScrolledFrame(mozilla::ScrollReflowInput&, bool, bool, mozilla::ReflowOutput*) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/ScrollContainerFrame.cpp:981:3
#24 0x75504a025e52 in mozilla::ScrollContainerFrame::ReflowContents(mozilla::ScrollReflowInput&, mozilla::ReflowOutput const&) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/ScrollContainerFrame.cpp:1091:3
#25 0x75504a02a599 in mozilla::ScrollContainerFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/ScrollContainerFrame.cpp:1544:3
#26 0x75504a3afee2 in nsTextControlFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) /builds/worker/workspace/obj-build/layout/forms/./../../../../checkouts/gecko/layout/forms/nsTextControlFrame.cpp:266:25
#27 0x75504a2c0d02 in nsLineLayout::ReflowFrame(nsIFrame*, nsReflowStatus&, mozilla::ReflowOutput*, bool&) /builds/worker/workspace/obj-build/layout/generic/./../../../../checkouts/gecko/layout/generic/nsLineLayout.cpp:863:13
...
Flags: in-testsuite?
Crash Signature: [@ mozilla::css::TextOverflow::CanHaveOverflowMarkers ]
Keywords: crash

Verified bug as reproducible on mozilla-central 20260721202327-396bd39825d0.
The bug appears to have been introduced in the following build range:

Start: 45084753b876bb64c88bb4886ae295bb4be535d0 (20260717161114)
End: 296eb6b873687b885f040e6fb71aec88ec02316a (20260717163416)
Pushlog: https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=45084753b876bb64c88bb4886ae295bb4be535d0&tochange=296eb6b873687b885f040e6fb71aec88ec02316a

Keywords: regression
Whiteboard: [fuzzblocker] → [fuzzblocker][bugmon:bisected,confirmed]
Regressed by: 2047669

:emilio, since you are the author of the regressor, bug 2047669, could you take a look? Also, could you set the severity field?

For more information, please visit BugBot documentation.

Flags: needinfo?(emilio)
Assignee: nobody → emilio
Status: NEW → ASSIGNED

Matches other browsers and our previous behavior, in general it doesn't
make sense to split an input into columns.

Flags: needinfo?(emilio)
Pushed by ealvarez@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/694b65b487a4 https://hg.mozilla.org/integration/autoland/rev/f5a67dd06bc5 Don't allow <input> / <textarea> to be affected by multicol styles. r=layout-reviewers,jfkthame

Created web-platform-tests PR https://github.com/web-platform-tests/wpt/pull/61481 for changes under testing/web-platform/tests

Whiteboard: [fuzzblocker][bugmon:bisected,confirmed] → [fuzzblocker][bugmon:bisected,confirmed], [wptsync upstream]
Status: ASSIGNED → RESOLVED
Closed: 1 month ago
Resolution: --- → FIXED
Target Milestone: --- → 155 Branch

Upstream PR merged by moz-wptsync-bot

The patch landed in nightly and beta is affected.
:emilio, is this bug important enough to require an uplift?

For more information, please visit BugBot documentation.

Flags: needinfo?(emilio)

Matches other browsers and our previous behavior, in general it doesn't
make sense to split an input into columns.

Original Revision: https://phabricator.services.mozilla.com/D313434

Attachment #9614678 - Flags: approval-mozilla-beta?

firefox-beta Uplift Approval Request

  • User impact if declined/Reason for urgency: oneliner crash fix
  • Code covered by automated testing?: yes
  • Fix verified in Nightly?: yes
  • Needs manual QE testing?: no
  • Steps to reproduce for manual QE testing:
  • Risk associated with taking this patch: low
  • Explanation of risk level: Trivial fix + test
  • String changes made/needed?: none
  • Is Android affected?: yes
Flags: needinfo?(emilio)

Verified bug as fixed on rev mozilla-central 20260722214024-ae4fce337439.
Removing bugmon keyword as no further action possible. Please review the bug and re-add the keyword for further analysis.

Status: RESOLVED → VERIFIED
Keywords: bugmon
Attachment #9614678 - Flags: approval-mozilla-beta? → approval-mozilla-beta+

firefox-esr153 Uplift Approval Request

  • User impact if declined/Reason for urgency: Regression fix
  • Code covered by automated testing?: yes
  • Fix verified in Nightly?: yes
  • Needs manual QE testing?: yes
  • Steps to reproduce for manual QE testing: bug 2047669 comment 0
  • Risk associated with taking this patch: low
  • Explanation of risk level: Has been on nightly + beta for a bit and it's well tested.
  • String changes made/needed?: none
  • Is Android affected?: yes
Attachment #9621241 - Flags: approval-mozilla-esr153?
Flags: qe-verify+

Matches other browsers and our previous behavior, in general it doesn't
make sense to split an input into columns.

Original Revision: https://phabricator.services.mozilla.com/D313434

Attachment #9621241 - Flags: approval-mozilla-esr153? → approval-mozilla-esr153+
QA Whiteboard: [uplift][qa-ver-needed-c155/b154]

Reproduced the issue on Nightly 155.0a1 (2026-07-20) and also reproduced the issue mentioned in Comment 14 on Nightly 153.0a1 (2026-06-14) using Ubuntu 22.04. Verified as fixed on the latest Nightly 155.0a1, Firefox 154.0b7 and Firefox 153.1.0esr (treeherder build) where the issues no longer reproduce. Updating the flags accordingly.

QA Whiteboard: [uplift][qa-ver-needed-c155/b154] → [uplift][qa-ver-done-c155/b154]
Flags: qe-verify+
QA Contact: epopescu
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: