Closed Bug 1183896 Opened 9 years ago Closed 9 years ago

Crash with table, position:sticky

Categories

(Core :: Layout, defect)

defect
Not set
critical

Tracking

()

RESOLVED FIXED
mozilla42
Tracking Status
firefox42 --- fixed

People

(Reporter: jruderman, Assigned: bzbarsky)

References

Details

(Keywords: crash, regression, testcase)

Attachments

(3 files, 1 obsolete file)

Attached file testcase (crashes Firefox) (obsolete) —
      No description provided.
Blocks: randomstyles
Attached file stack
Attachment #8633765 - Attachment is obsolete: true
So the problem is that nsTableRowFrame::ReflowChildren is doing this:

994             LogicalMargin computedOffsets(wm, *static_cast<nsMargin*>
995               (kidFrame->Properties().Get(nsIFrame::ComputedOffsetProperty())));

but nsIFrame::ComputedOffsetProperty() returned null in this case.  kidFrame is an nsTableCellFrame....

Looks like StickyScrollContainer::ComputeStickyOffsets or nsHTMLReflowState::ComputeRelativeOffsets is supposed to set this prop.

In this case, the latter doesn't because we're not position:relative, and the former never happens because of bug 975644, which means we never reach ComputeStickyOffsets for table-internal stuff.
Assignee: nobody → bzbarsky
Status: NEW → ASSIGNED
Comment on attachment 8634272 [details] [diff] [review]
Don't assume that relatively positioned table cells actually have positioned offsets computed, because in the case of position:sticky they don't

r=me
Attachment #8634272 - Flags: review?(dholbert) → review+
(BTW: the contextual code changed a little, but this patch still applies correctly with fuzz.)
https://hg.mozilla.org/mozilla-central/rev/8472aae68d5c
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Flags: in-testsuite+
Resolution: --- → FIXED
Target Milestone: --- → mozilla42
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: