Closed
Bug 1225118
Opened 9 years ago
Closed 9 years ago
"ASSERTION: huh?" in AlignJustifySelf with display:grid, huge padding
Categories
(Core :: Layout, defect)
Core
Layout
Tracking
()
RESOLVED
FIXED
mozilla45
Tracking | Status | |
---|---|---|
firefox45 | --- | fixed |
People
(Reporter: jruderman, Assigned: MatsPalmgren_bugz)
References
Details
(Keywords: assertion, regression, testcase)
Attachments
(4 files, 1 obsolete file)
153 bytes,
text/html
|
Details | |
12.15 KB,
text/plain
|
Details | |
1.30 KB,
patch
|
Details | Diff | Splinter Review | |
1.95 KB,
patch
|
dholbert
:
review+
|
Details | Diff | Splinter Review |
###!!! ASSERTION: huh?: 'contentSize >= 0', file layout/generic/nsGridContainerFrame.cpp, line 965
Reporter | ||
Comment 1•9 years ago
|
||
Assignee | ||
Updated•9 years ago
|
Blocks: 1151213
Keywords: regression
Assignee | ||
Comment 3•9 years ago
|
||
(gdb) list 967 // instead? Do all fragments stretch? (bug 1144096). 968 bp.ApplySkipSides(aRS.frame->GetLogicalSkipSides()); 969 nscoord bpInAxis = aAxis == eLogicalAxisBlock ? bp.BStartEnd(wm) 970 : bp.IStartEnd(wm); 971 nscoord contentSize = size - bpInAxis; 972 NS_ASSERTION(contentSize >= 0, "huh?"); 973 const nscoord unstretchedContentSize = contentSize; 974 contentSize += gap; 975 nscoord max = aAxis == eLogicalAxisBlock ? aRS.ComputedMaxBSize() 976 : aRS.ComputedMaxISize(); (gdb) p size $2 = 1073741824 (gdb) p/x size $3 = 0x40000000 (gdb) p bpInAxis $4 = 1073741944 (gdb) p/x bpInAxis $5 = 0x40000078 (gdb) p bp $6 = { mWritingMode = { mWritingMode = 0 '\000' }, mMargin = { <mozilla::gfx::BaseMargin<int, nsMargin>> = { top = 60, right = 1073741884, bottom = 60, left = 60 }, <No data fields>} } (gdb) p/x bp $7 = { mWritingMode = { mWritingMode = 0x0 }, mMargin = { <mozilla::gfx::BaseMargin<int, nsMargin>> = { top = 0x3c, right = 0x4000003c, bottom = 0x3c, left = 0x3c }, <No data fields>} }
Assignee | ||
Comment 4•9 years ago
|
||
nscoord overflow - resistance is futile! Normally I don't care what the rendering is for tests like this, but I guess we should at least return a non-negative content size here.
Attachment #8687996 -
Flags: review?(dholbert)
Assignee | ||
Comment 5•9 years ago
|
||
Comment 6•9 years ago
|
||
Comment on attachment 8687996 [details] [diff] [review] fix Review of attachment 8687996 [details] [diff] [review]: ----------------------------------------------------------------- ::: layout/generic/nsGridContainerFrame.cpp @@ +974,5 @@ > didResize = gap > 0; > if (didResize) { > + auto& size = (aAxis == eLogicalAxisBlock ? aContentSize->BSize(wm) > + : aContentSize->ISize(wm)); > + size = std::max(0, contentSize); I'm not sure that this intervention (clamping contentSize to 0 when we set |size|) is the right thing to do here, particularly if we leave "gap" as something nonzero and perform the "offset += gap" step below it. That offset+=gap step is premised on the assumption that we just adjusted the size. IMO it makes marginally more sense (and allows for better branch-prediction & fewer assignments) if we just add a contentSize check to this clause -- so, change the didResize check to: if (didResize && MOZ_LIKELY(contentSize >= 0)) { The idea being, regardless of "didResize", we only actually *do resize* if we're left with a nonnegative size. Does that make sense? Also: whatever intervention we use, it's probably worth adding a comment to indicate that this is a *bizarre edge case* & not a normal circumstance. e.g.: // (contentSize can only be negative if there's absurdly large sizes involved) (Also, side-note: your variable "size" here actually shadows a variable with the same name that's declared earlier in this case statement: https://mxr.mozilla.org/mozilla-central/source/layout/generic/nsGridContainerFrame.cpp?rev=5ae04c1c341c#951 But per my main point here RE the didResize check, I don't think we need to modify the contents of this clause anyway.)
Assignee | ||
Comment 7•9 years ago
|
||
Yeah, that's better, thanks.
Attachment #8687996 -
Attachment is obsolete: true
Attachment #8687996 -
Flags: review?(dholbert)
Attachment #8688059 -
Flags: review?(dholbert)
Comment 8•9 years ago
|
||
Comment on attachment 8688059 [details] [diff] [review] fix Review of attachment 8688059 [details] [diff] [review]: ----------------------------------------------------------------- Thanks! Maybe tweak commit message to mention grid and/or "justify-content:stretch", too. (Current message, "Deal with nscoord overflow a little better", is perhaps a bit generic.) r=me in any case.
Attachment #8688059 -
Flags: review?(dholbert) → review+
Comment 9•9 years ago
|
||
(In reply to Daniel Holbert [:dholbert] from comment #8) > Maybe tweak commit message to mention grid and/or "justify-content:stretch", er, meant to say "justify-self" (not "justify-content")
Comment 10•9 years ago
|
||
https://hg.mozilla.org/integration/mozilla-inbound/rev/b25b71b35630 https://hg.mozilla.org/integration/mozilla-inbound/rev/b741d265470e
Assignee | ||
Updated•9 years ago
|
Flags: in-testsuite+
Comment 11•9 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/b25b71b35630 https://hg.mozilla.org/mozilla-central/rev/b741d265470e
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla45
You need to log in
before you can comment on or make changes to this bug.
Description
•