Bug 151097 - ASSERTION FAILED: willBeComposited == needsToBeComposited(layer) in WebCore::RenderLayerCompositor::computeCompositingRequirements
Summary: ASSERTION FAILED: willBeComposited == needsToBeComposited(layer) in WebCore::...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Layout and Rendering (show other bugs)
Version: WebKit Local Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: zalan
URL:
Keywords: InRadar
Depends on:
Blocks: 116980
  Show dependency treegraph
 
Reported: 2015-11-10 08:40 PST by Renata Hodovan
Modified: 2016-09-17 08:22 PDT (History)
10 users (show)

See Also:


Attachments
Test (256 bytes, text/html)
2015-11-10 08:40 PST, Renata Hodovan
no flags Details
Patch (7.53 KB, patch)
2016-09-15 13:48 PDT, zalan
no flags Details | Formatted Diff | Diff
Patch (7.53 KB, patch)
2016-09-15 14:22 PDT, zalan
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Renata Hodovan 2015-11-10 08:40:35 PST
Created attachment 265181 [details]
Test

Load the attached test with debug MiniBrowser:

<style>
* {
    will-change:-webkit-transform
}
* {
    overflow: hidden;
    z-index: -40;
    -webkit-appearance: discrete-capacity-level-indicator;
    position: relative;
}
ruby {
    display: table-row-group
}
</style>
<ruby>
    <mark></mark>
</ruby>


OS: Ubuntu 15.04 x86_64
Checked build: debug EFL
Checked version: 29ae33c


Backtrace:

ASSERTION FAILED: willBeComposited == needsToBeComposited(layer)
../../Source/WebCore/rendering/RenderLayerCompositor.cpp(1466) : void WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer*, WebCore::RenderLayer&, WebCore::RenderLayerCompositor::OverlapMap&, WebCore::RenderLayerCompositor::CompositingState&, bool&, bool&)
1   0x7f227fa1389f WTFCrash
2   0x7f228645dbd9 WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer*, WebCore::RenderLayer&, WebCore::RenderLayerCompositor::OverlapMap&, WebCore::RenderLayerCompositor::CompositingState&, bool&, bool&)
3   0x7f228645da1e WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer*, WebCore::RenderLayer&, WebCore::RenderLayerCompositor::OverlapMap&, WebCore::RenderLayerCompositor::CompositingState&, bool&, bool&)
4   0x7f228645d89b WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer*, WebCore::RenderLayer&, WebCore::RenderLayerCompositor::OverlapMap&, WebCore::RenderLayerCompositor::CompositingState&, bool&, bool&)
5   0x7f228645d89b WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer*, WebCore::RenderLayer&, WebCore::RenderLayerCompositor::OverlapMap&, WebCore::RenderLayerCompositor::CompositingState&, bool&, bool&)
6   0x7f228645aded WebCore::RenderLayerCompositor::updateCompositingLayers(WebCore::CompositingUpdateType, WebCore::RenderLayer*)
7   0x7f22860ead41 WebCore::FrameView::updateCompositingLayersAfterLayout()
8   0x7f22860ec9ed WebCore::FrameView::layout(bool)
9   0x7f2285b49f3c WebCore::Document::implicitClose()
10  0x7f2285faf827 WebCore::FrameLoader::checkCallImplicitClose()
11  0x7f2285faf55e WebCore::FrameLoader::checkCompleted()
12  0x7f2285faf2ce WebCore::FrameLoader::finishedParsing()
13  0x7f2285b53f6c WebCore::Document::finishedParsing()
14  0x7f2286ebf349 WebCore::HTMLConstructionSite::finishedParsing()
15  0x7f2285ea8064 WebCore::HTMLTreeBuilder::finished()
16  0x7f2285e78708 WebCore::HTMLDocumentParser::end()
17  0x7f2285e787e1 WebCore::HTMLDocumentParser::attemptToRunDeferredScriptsAndEnd()
18  0x7f2285e774c3 WebCore::HTMLDocumentParser::prepareToStopParsing()
19  0x7f2285e78824 WebCore::HTMLDocumentParser::attemptToEnd()
20  0x7f2285e788db WebCore::HTMLDocumentParser::finish()
21  0x7f2285f9a702 WebCore::DocumentWriter::end()
22  0x7f2285f83fd8 WebCore::DocumentLoader::finishedLoading(double)
23  0x7f2285f83d36 WebCore::DocumentLoader::notifyFinished(WebCore::CachedResource*)
24  0x7f228602f143 WebCore::CachedResource::checkNotify()
25  0x7f228602f252 WebCore::CachedResource::finishLoading(WebCore::SharedBuffer*)
26  0x7f228602b446 WebCore::CachedRawResource::finishLoading(WebCore::SharedBuffer*)
27  0x7f2285ff3e74 WebCore::SubresourceLoader::didFinishLoading(double)
28  0x7f2285fee953 WebCore::ResourceLoader::didFinishLoading(WebCore::ResourceHandle*, double)
29  0x7f22867e219a
30  0x7f227c0035a6
31  0x7f227c029b74
Aborted (core dumped)

Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f227fa138a4 in WTFCrash () at ../../Source/WTF/wtf/Assertions.cpp:321
321     *(int *)(uintptr_t)0xbbadbeef = 0;
#0  0x00007f227fa138a4 in WTFCrash () at ../../Source/WTF/wtf/Assertions.cpp:321
#1  0x00007f228645dbd9 in WebCore::RenderLayerCompositor::computeCompositingRequirements (this=0x7f2266edb230, ancestorLayer=0x7f2266efe900, layer=..., overlapMap=..., compositingState=..., layersChanged=@0x7fff2d8f7eda: false, descendantHas3DTransform=@0x7fff2d8f7b34: false) at ../../Source/WebCore/rendering/RenderLayerCompositor.cpp:1466
#2  0x00007f228645da1e in WebCore::RenderLayerCompositor::computeCompositingRequirements (this=0x7f2266edb230, ancestorLayer=0x7f2266efe7e0, layer=..., overlapMap=..., compositingState=..., layersChanged=@0x7fff2d8f7eda: false, descendantHas3DTransform=@0x7fff2d8f7c74: false) at ../../Source/WebCore/rendering/RenderLayerCompositor.cpp:1447
#3  0x00007f228645d89b in WebCore::RenderLayerCompositor::computeCompositingRequirements (this=0x7f2266edb230, ancestorLayer=0x7f2266efe5a0, layer=..., overlapMap=..., compositingState=..., layersChanged=@0x7fff2d8f7eda: false, descendantHas3DTransform=@0x7fff2d8f7db4: false) at ../../Source/WebCore/rendering/RenderLayerCompositor.cpp:1418
#4  0x00007f228645d89b in WebCore::RenderLayerCompositor::computeCompositingRequirements (this=0x7f2266edb230, ancestorLayer=0x0, layer=..., overlapMap=..., compositingState=..., layersChanged=@0x7fff2d8f7eda: false, descendantHas3DTransform=@0x7fff2d8f7ef0: false) at ../../Source/WebCore/rendering/RenderLayerCompositor.cpp:1418
#5  0x00007f228645aded in WebCore::RenderLayerCompositor::updateCompositingLayers (this=0x7f2266edb230, updateType=WebCore::CompositingUpdateAfterLayout, updateRoot=0x7f2266efe5a0) at ../../Source/WebCore/rendering/RenderLayerCompositor.cpp:751
#6  0x00007f22860ead41 in WebCore::FrameView::updateCompositingLayersAfterLayout (this=0x7f2266c25540) at ../../Source/WebCore/page/FrameView.cpp:853
#7  0x00007f22860ec9ed in WebCore::FrameView::layout (this=0x7f2266c25540, allowSubtree=true) at ../../Source/WebCore/page/FrameView.cpp:1451
#8  0x00007f2285b49f3c in WebCore::Document::implicitClose (this=0x7f2266c26a40) at ../../Source/WebCore/dom/Document.cpp:2704
#9  0x00007f2285faf827 in WebCore::FrameLoader::checkCallImplicitClose (this=0x7f2266ee4098) at ../../Source/WebCore/loader/FrameLoader.cpp:889
#10 0x00007f2285faf55e in WebCore::FrameLoader::checkCompleted (this=0x7f2266ee4098) at ../../Source/WebCore/loader/FrameLoader.cpp:835
#11 0x00007f2285faf2ce in WebCore::FrameLoader::finishedParsing (this=0x7f2266ee4098) at ../../Source/WebCore/loader/FrameLoader.cpp:756
#12 0x00007f2285b53f6c in WebCore::Document::finishedParsing (this=0x7f2266c26a40) at ../../Source/WebCore/dom/Document.cpp:4897
#13 0x00007f2286ebf349 in WebCore::HTMLConstructionSite::finishedParsing (this=0x7f2266efe6e0) at ../../Source/WebCore/html/parser/HTMLConstructionSite.cpp:403
#14 0x00007f2285ea8064 in WebCore::HTMLTreeBuilder::finished (this=0x7f2266efe6c0) at ../../Source/WebCore/html/parser/HTMLTreeBuilder.cpp:2937
#15 0x00007f2285e78708 in WebCore::HTMLDocumentParser::end (this=0x7f2266c2e840) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:393
#16 0x00007f2285e787e1 in WebCore::HTMLDocumentParser::attemptToRunDeferredScriptsAndEnd (this=0x7f2266c2e840) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:402
#17 0x00007f2285e774c3 in WebCore::HTMLDocumentParser::prepareToStopParsing (this=0x7f2266c2e840) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:132
#18 0x00007f2285e78824 in WebCore::HTMLDocumentParser::attemptToEnd (this=0x7f2266c2e840) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:414
#19 0x00007f2285e788db in WebCore::HTMLDocumentParser::finish (this=0x7f2266c2e840) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:442
#20 0x00007f2285f9a702 in WebCore::DocumentWriter::end (this=0x7f2266c249e0) at ../../Source/WebCore/loader/DocumentWriter.cpp:247
#21 0x00007f2285f83fd8 in WebCore::DocumentLoader::finishedLoading (this=0x7f2266c24940, finishTime=0) at ../../Source/WebCore/loader/DocumentLoader.cpp:437
#22 0x00007f2285f83d36 in WebCore::DocumentLoader::notifyFinished (this=0x7f2266c24940, resource=0x7f2266c36000) at ../../Source/WebCore/loader/DocumentLoader.cpp:384
#23 0x00007f228602f143 in WebCore::CachedResource::checkNotify (this=0x7f2266c36000) at ../../Source/WebCore/loader/cache/CachedResource.cpp:297
#24 0x00007f228602f252 in WebCore::CachedResource::finishLoading (this=0x7f2266c36000) at ../../Source/WebCore/loader/cache/CachedResource.cpp:313
#25 0x00007f228602b446 in WebCore::CachedRawResource::finishLoading (this=0x7f2266c36000, data=0x7f2266fbb680) at ../../Source/WebCore/loader/cache/CachedRawResource.cpp:103
#26 0x00007f2285ff3e74 in WebCore::SubresourceLoader::didFinishLoading (this=0x7f2266c2fa80, finishTime=0) at ../../Source/WebCore/loader/SubresourceLoader.cpp:372
#27 0x00007f2285fee953 in WebCore::ResourceLoader::didFinishLoading (this=0x7f2266c2fa80, finishTime=0) at ../../Source/WebCore/loader/ResourceLoader.cpp:638
#28 0x00007f22867e219a in WebCore::readCallback (asyncResult=0xcfb9d0, data=0x7f2266fbc680) at ../../Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:1341
#29 0x00007f227c0035a6 in async_ready_callback_wrapper (source_object=0xc439b0, res=0xcfb9d0, user_data=0x7f2266fbc680) at ginputstream.c:523
#30 0x00007f227c029b74 in g_task_return_now (task=0xcfb9d0) at gtask.c:1077
#31 0x00007f227c029b99 in complete_in_idle_cb (task=0xcfb9d0) at gtask.c:1086
#32 0x00007f227ba61add in g_main_dispatch (context=0xc3dba0) at gmain.c:3064
#33 g_main_context_dispatch (context=context@entry=0xc3dba0) at gmain.c:3663
#34 0x00007f227d3cde58 in _ecore_glib_select__locked (ecore_timeout=<optimized out>, efds=0x7fff2d8f8dd0, wfds=0x7fff2d8f8d50, rfds=0x7fff2d8f8cd0, ecore_fds=<optimized out>, ctx=<optimized out>) at lib/ecore/ecore_glib.c:172
#35 _ecore_glib_select (ecore_fds=<optimized out>, rfds=0x7fff2d8f8cd0, wfds=0x7fff2d8f8d50, efds=0x7fff2d8f8dd0, ecore_timeout=<optimized out>) at lib/ecore/ecore_glib.c:204
#36 0x00007f227d3d14a4 in _ecore_main_select (timeout=9.532824124368238e-130) at lib/ecore/ecore_main.c:1459
#37 0x00007f227d3d1ed4 in _ecore_main_loop_iterate_internal (once_only=once_only@entry=0) at lib/ecore/ecore_main.c:1893
#38 0x00007f227d3d1fc7 in ecore_main_loop_begin () at lib/ecore/ecore_main.c:983
#39 0x00007f227fa6e795 in WTF::RunLoop::run () at ../../Source/WTF/wtf/efl/RunLoopEfl.cpp:49
#40 0x00007f22858ce87d in WebKit::ChildProcessMain<WebKit::WebProcess, WebKit::WebProcessMain> (argc=2, argv=0x7fff2d8f9208) at ../../Source/WebKit2/Shared/unix/ChildProcessMain.h:61
#41 0x00007f22858ce48b in WebKit::WebProcessMainUnix (argc=2, argv=0x7fff2d8f9208) at ../../Source/WebKit2/WebProcess/efl/WebProcessMainEfl.cpp:161
#42 0x00000000004008ea in main (argc=2, argv=0x7fff2d8f9208) at ../../Source/WebKit2/WebProcess/EntryPoint/unix/WebProcessMain.cpp:44
Comment 1 Brent Fulgham 2016-08-04 18:19:47 PDT
This reproduces in r204037.
Comment 2 Radar WebKit Bug Importer 2016-08-04 18:20:10 PDT
<rdar://problem/27711678>
Comment 3 zalan 2016-09-15 13:48:46 PDT
Created attachment 288993 [details]
Patch
Comment 4 Simon Fraser (smfr) 2016-09-15 13:55:04 PDT
Comment on attachment 288993 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=288993&action=review

> Source/WebCore/ChangeLog:9
> +        This patch ensures that when will-change property triggers stacking context, we make the associated layer a non normal flow layer.

non-normal flow

> Source/WebCore/ChangeLog:10
> +        (This is similar to what any other stacking context triggering CSS property does.)  

context-triggering

> LayoutTests/compositing/assert-on-will-change-transform-with-composited-descendant.html:16
> +    z-index: -2;

-1 should be enough?
Comment 5 zalan 2016-09-15 14:22:13 PDT
Created attachment 288998 [details]
Patch
Comment 6 WebKit Commit Bot 2016-09-15 15:15:21 PDT
Comment on attachment 288998 [details]
Patch

Clearing flags on attachment: 288998

Committed r205999: <http://trac.webkit.org/changeset/205999>
Comment 7 WebKit Commit Bot 2016-09-15 15:15:27 PDT
All reviewed patches have been landed.  Closing bug.
Comment 8 David Kilzer (:ddkilzer) 2016-09-17 03:47:50 PDT
(In reply to comment #6)
> Comment on attachment 288998 [details]
> Patch
> 
> Clearing flags on attachment: 288998
> 
> Committed r205999: <http://trac.webkit.org/changeset/205999>

Why are the changes to Source/WebCore/rendering/style/WillChangeData.{cpp|h} not described in the ChangeLog?

Was this an accidental change that removed code?
Comment 9 zalan 2016-09-17 08:22:57 PDT
(In reply to comment #8)
> (In reply to comment #6)
> > Comment on attachment 288998 [details]
> > Patch
> > 
> > Clearing flags on attachment: 288998
> > 
> > Committed r205999: <http://trac.webkit.org/changeset/205999>
> 
> Why are the changes to Source/WebCore/rendering/style/WillChangeData.{cpp|h}
> not described in the ChangeLog?
> 
> Was this an accidental change that removed code?
Those functions/member are not used anymore. I must have run prepare-changelog before I realized they were not needed anymore. :(