NEW 72284
ASSERT in RenderLayerCompositor on /fast/multicol/pagination-v-horizontal-bt.html
https://bugs.webkit.org/show_bug.cgi?id=72284
Summary ASSERT in RenderLayerCompositor on /fast/multicol/pagination-v-horizontal-bt....
Alexis Menard (darktears)
Reported 2011-11-14 09:53:38 PST
ASSERT in RenderLayerCompositor with Qt port.
Attachments
Patch (1.77 KB, patch)
2011-11-14 09:56 PST, Alexis Menard (darktears)
simon.fraser: review-
Alexis Menard (darktears)
Comment 1 2011-11-14 09:56:19 PST
Alexis Menard (darktears)
Comment 2 2011-11-14 10:01:45 PST
./WebKitTestRunner --verbose ../../../webkit/LayoutTests/fast/multicol/pagination-v-horizontal-bt.html assert with the Qt port on WK2. We use AC by default now. The assert is 0x00007f35eb3ba376 in WebCore::RenderLayerCompositor::computeCompositingRequirements (this=0x7f359403f7f0, layer=0x7f359403f6b8, overlapMap=0x7fff43cb51d0, compositingState=..., layersChanged=@0x7fff43cb523f) at ../../../../webkit/Source/WebCore/rendering/RenderLayerCompositor.cpp:758 758 ASSERT(willBeComposited == needsToBeComposited(layer)); The test triggers a style change in the root layer moving from a normal flow only to a different one. I'm not very familiar with the code here but it seems that if a layer is not normal flow only it can't be composited but computeCompositingRequirements assume that if we are in composition mode (the state we are before) and AC is turned on (which is always true) then the root layer will be composited but according to canBeComposited the layer can be composited only if layer->isSelfPaintingLayer(); is true which is not true anymore as the latter check !isNormalFlowOnly(). Any suggestion on how I can improve the patch is welcome, or if I spot the right problem in the first place. Thanks.
Simon Fraser (smfr)
Comment 3 2011-11-14 10:03:46 PST
canBeComposited() can return false for the root layer? That would break all kinds of stuff.
Alexis Menard (darktears)
Comment 4 2011-11-14 10:05:49 PST
(In reply to comment #3) > canBeComposited() can return false for the root layer? That would break all kinds of stuff. It doesn't seem that there is specific check for that. The root layer should be always composited not matter the style?
Simon Fraser (smfr)
Comment 5 2011-11-14 14:06:08 PST
(In reply to comment #4) > (In reply to comment #3) > > canBeComposited() can return false for the root layer? That would break all kinds of stuff. > > It doesn't seem that there is specific check for that. The root layer should be always composited not matter the style? If there are any other compositing layers, the root layer is composited, yes. If that's no longer true for multicol, then we'll have to fix it somehow.
Simon Fraser (smfr)
Comment 6 2011-12-21 12:44:51 PST
*** Bug 74999 has been marked as a duplicate of this bug. ***
Balazs Kelemen
Comment 7 2011-12-21 14:33:40 PST
(In reply to comment #5) > (In reply to comment #4) > > (In reply to comment #3) > > > canBeComposited() can return false for the root layer? That would break all kinds of stuff. > > > > It doesn't seem that there is specific check for that. The root layer should be always composited not matter the style? > > If there are any other compositing layers, the root layer is composited, yes. If that's no longer true for multicol, then we'll have to fix it somehow. But we are dealing with the root layer here, rigth? So, there is no other compositing layers yet, and we are deciding whether to composite the root layer. But ts is normalFlowOnly() => !isSelfPainting(), and canBeComposited say that such layers cannot be composited. But I guess that rather means such layers _should_ not be composited, because they are too primitive to be worth to composite them. Note that canBeComposited is called from needToBeComposited. Furthermore, there was no check for whether it is a root layer before http://trac.webkit.org/changeset/63149. I think the preassumption that the root layer must be composited if we have entered into compositing mode is wrong. I don't know exactly what it means "entering into compositing mode" but it seems to me that it doesn't mean to force compositing to all kinds of content. Well, I'm not familiar with the AC machinery, I just try to interpret what I see :) What do you think?
Balazs Kelemen
Comment 8 2011-12-22 01:41:23 PST
Test results (locally, debug) with the patch: no unexpected regression, no crash on pagination-* tests.
Note You need to log in before you can comment on or make changes to this bug.