| Summary: | Crash in RenderListItem::addOverflowFromChildren | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Ryosuke Niwa <rniwa> | ||||||||||
| Component: | Layout and Rendering | Assignee: | Nobody <webkit-unassigned> | ||||||||||
| Status: | RESOLVED DUPLICATE | ||||||||||||
| Severity: | Normal | CC: | ajuma, bfulgham, koivisto, product-security, rohitrao, simon.fraser, webkit-bug-importer, zalan | ||||||||||
| Priority: | P2 | Keywords: | InRadar | ||||||||||
| Version: | WebKit Nightly Build | ||||||||||||
| Hardware: | Unspecified | ||||||||||||
| OS: | Unspecified | ||||||||||||
| Attachments: |
|
||||||||||||
|
Description
Ryosuke Niwa
2020-01-30 23:15:32 PST
Created attachment 389331 [details]
Test case (unreduced)
Created attachment 389691 [details]
Test case (reduced)
Created attachment 390082 [details]
Minimal test case
This is crashing because in the render tree, we have a RenderInline whose child is a RenderBox.
The minimal test case is just:
<label>
<ul style="display: table-caption; columns: 1px">
<li style="-webkit-border-image: url()">
<dl style="-webkit-column-span: all;">
<dd>p
In the render tree, the ul element's RenderTableCaption has a RenderTable parent, whose parent is the RenderInline for the label element.
We crash in RenderListItem::positionListMarker because as we keep updating |markerAncestor| in the loop at https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/rendering/RenderListItem.cpp#L341, going down the parentBox chain, we eventually get a null |markerAncestor| when we reach the RenderBox whose parent is that RenderInline (since RenderBox::parentBox returns null if parent() isn't a RenderBox).
In a debug build, we fail the assertion in RenderBox::parentBox that parent() is a RenderBox.
Where would be a good place to start looking to figure out why a RenderInline is getting a RenderBox child?
Created attachment 391582 [details]
More-minimal test case
Minimized the test case just a bit more.
I'm still not sure why the RenderInline is getting a RenderBox child rather than the usual logic of creating an anonymous block getting triggered, but it seems like RenderTreeBuilder::Inline::attachIgnoringContinuation is the place to debug.
Oh looks like this got fixed in the bug 209262. Reverse duping *** This bug has been marked as a duplicate of bug 209262 *** |