Bug 102599 - ASSERT loading Acid3 test in run-safari --debug (r135050)
Summary: ASSERT loading Acid3 test in run-safari --debug (r135050)
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Layout and Rendering (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Beth Dakin
URL:
Keywords: MakingBotsRed
Depends on:
Blocks:
 
Reported: 2012-11-17 15:09 PST by Eric Seidel (no email)
Modified: 2012-12-13 17:46 PST (History)
12 users (show)

See Also:


Attachments
Patch (5.25 KB, patch)
2012-12-12 22:46 PST, Beth Dakin
no flags Details | Formatted Diff | Diff
Patch (5.15 KB, patch)
2012-12-13 17:13 PST, Beth Dakin
simon.fraser: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Eric Seidel (no email) 2012-11-17 15:09:35 PST
ASSERT loading Acid3 test in run-safari --debug (r135050)

ASSERTION FAILED: willBeComposited == needsToBeComposited(layer)
/Users/eseidel/Projects/WebKit/Source/WebCore/rendering/RenderLayerCompositor.cpp(894) : void WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer *, WebCore::RenderLayer *, WebCore::RenderLayerCompositor::OverlapMap *, WebCore::CompositingState &, bool &, bool &)
1   0x10e6db5e5 WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer*, WebCore::RenderLayer*, WebCore::RenderLayerCompositor::OverlapMap*, WebCore::CompositingState&, bool&, bool&)
2   0x10e6db52d WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer*, WebCore::RenderLayer*, WebCore::RenderLayerCompositor::OverlapMap*, WebCore::CompositingState&, bool&, bool&)
3   0x10e6db52d WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer*, WebCore::RenderLayer*, WebCore::RenderLayerCompositor::OverlapMap*, WebCore::CompositingState&, bool&, bool&)
4   0x10e6daac3 WebCore::RenderLayerCompositor::updateCompositingLayers(WebCore::CompositingUpdateType, WebCore::RenderLayer*)
5   0x10da6d0cd WebCore::FrameView::updateCompositingLayersAfterLayout()
6   0x10da6ecb3 WebCore::FrameView::layout(bool)
7   0x10da6a830 WebCore::FrameView::layoutTimerFired(WebCore::Timer<WebCore::FrameView>*)
8   0x10da865d3 WebCore::Timer<WebCore::FrameView>::fired()
9   0x10ec46af6 WebCore::ThreadTimers::sharedTimerFiredInternal()
10  0x10ec46889 WebCore::ThreadTimers::sharedTimerFired()
11  0x10e96d933 WebCore::timerFired(__CFRunLoopTimer*, void*)
12  0x7fff91112da4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__
Comment 1 John Knottenbelt 2012-11-21 10:08:18 PST
See also discussion in https://bugs.webkit.org/show_bug.cgi?id=101303
Comment 2 Simon Fraser (smfr) 2012-11-30 15:59:10 PST
Caused by http://trac.webkit.org/changeset/133807
Comment 3 Beth Dakin 2012-12-11 14:32:47 PST
This is obviously contributing to the red WK2 bots.
Comment 4 Beth Dakin 2012-12-12 22:41:34 PST
I've been investigating this today, and I looked at it a bit with Simon. The problem is that there is a bit of a circular dependency here. We're trying to figure out if we need to composite something that is positioned. But in the case where that positioned thing is out of view or has a size of (0,0), we don't really know if it needs to be composited until we have determined what's happening with its children. In this case, it seems like we probably hit this bug because there was a position:absolute box inside a position:fixed box. At first we thought the the position:fixed thing would be composited for the sake of the position:absolute thing. But then if the course of all of these calculations, it was determined that actually the position:absolute thing needs its own layer, so the position:fixed thing no longer needs to be composited for the sake of the position:absolute thing. Then we assert.

Anyway, I have a patch for this that I will post shortly.
Comment 5 Beth Dakin 2012-12-12 22:46:27 PST
Created attachment 179201 [details]
Patch
Comment 6 Eric Seidel (no email) 2012-12-12 22:50:41 PST
Thanks Beth. :)
Comment 7 WebKit Review Bot 2012-12-12 22:52:13 PST
Attachment 179201 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/WebCore/ChangeLog', u'Source/WebCor..." exit_code: 1
Source/WebCore/rendering/RenderLayerCompositor.cpp:2000:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 8 Beth Dakin 2012-12-13 17:13:46 PST
Created attachment 179381 [details]
Patch
Comment 9 Simon Fraser (smfr) 2012-12-13 17:19:52 PST
Comment on attachment 179381 [details]
Patch

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

> Source/WebCore/rendering/RenderLayerCompositor.cpp:1999
> +        LayoutRect layerBounds = canBeComposited(layer) ? layer->calculateLayerBounds(rootRenderLayer(), 0, RenderLayer::DefaultCalculateLayerBoundsFlags

I don't think we need the canBeComposited() check, since needsToBeComposited() already bails on this. I don't really know why calculateCompositedBounds() had it.
Comment 10 Beth Dakin 2012-12-13 17:46:17 PST
Thanks, Simon!

http://trac.webkit.org/changeset/137690