WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
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-
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Alexis Menard (darktears)
Comment 1
2011-11-14 09:56:19 PST
Created
attachment 114972
[details]
Patch
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.
Top of Page
Format For Printing
XML
Clone This Bug