Bug 121925

Summary: Layout assertion failure in WebCore::RenderView::paint
Product: WebKit Reporter: Ryosuke Niwa <rniwa>
Component: Layout and RenderingAssignee: Simon Fraser (smfr) <simon.fraser>
Status: RESOLVED FIXED    
Severity: Normal CC: andersca, ap, commit-queue, esprehn+autocc, glenn, kondapallykalyan, simon.fraser, thorton, zalan
Priority: P2 Keywords: InRadar, LayoutTestFailure
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch thorton: review+

Ryosuke Niwa
Reported 2013-09-25 14:04:44 PDT
e.g. http://build.webkit.org/results/Apple%20MountainLion%20Debug%20WK2%20(Tests)/r156418%20(12895)/results.html Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 com.apple.JavaScriptCore 0x000000010db1aeca WTFCrash + 42 (Assertions.cpp:342) 1 com.apple.WebCore 0x000000010fe6bd7b WebCore::RenderView::paint(WebCore::PaintInfo&, WebCore::LayoutPoint const&) + 91 (RenderView.cpp:432) 2 com.apple.WebCore 0x000000010fcea9e5 WebCore::RenderLayer::paintBackgroundForFragments(WTF::Vector<WebCore::LayerFragment, 1ul, WTF::CrashOnOverflow> const&, WebCore::GraphicsContext*, WebCore::GraphicsContext*, WebCore::LayoutRect const&, bool, WebCore::RenderLayer::LayerPaintingInfo const&, unsigned int, WebCore::RenderObject*) + 693 (RenderLayer.cpp:4219) 3 com.apple.WebCore 0x000000010fce887a WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext*, WebCore::RenderLayer::LayerPaintingInfo const&, unsigned int) + 1866 (RenderLayer.cpp:3971) 4 com.apple.WebCore 0x000000010fd0fb84 WebCore::RenderLayerBacking::paintIntoLayer(WebCore::GraphicsLayer const*, WebCore::GraphicsContext*, WebCore::IntRect const&, unsigned int, unsigned int) + 532 (RenderLayerBacking.cpp:1997) 5 com.apple.WebCore 0x000000010fd0fe45 WebCore::RenderLayerBacking::paintContents(WebCore::GraphicsLayer const*, WebCore::GraphicsContext&, unsigned int, WebCore::IntRect const&) + 517 (RenderLayerBacking.cpp:2042) 6 com.apple.WebCore 0x000000010f16ea27 WebCore::GraphicsLayer::paintGraphicsLayerContents(WebCore::GraphicsContext&, WebCore::IntRect const&) + 199 (GraphicsLayer.cpp:337) 7 com.apple.WebCore 0x000000010f17c7d0 WebCore::GraphicsLayerCA::platformCALayerPaintContents(WebCore::GraphicsContext&, WebCore::IntRect const&) + 48 (GraphicsLayerCA.cpp:1182) 8 com.apple.WebCore 0x000000010f17c817 non-virtual thunk to WebCore::GraphicsLayerCA::platformCALayerPaintContents(WebCore::GraphicsContext&, WebCore::IntRect const&) + 55 (GraphicsLayerCA.cpp:1182) 9 com.apple.WebCore 0x00000001102bb8f6 drawLayerContents(CGContext*, CALayer*, WebCore::PlatformCALayer*) + 1798 (WebLayer.mm:118) 10 com.apple.WebCore 0x00000001101f998b WebCore::TileController::drawLayer(WebTileLayer*, CGContext*) + 283 (TileController.mm:221) 11 com.apple.WebCore 0x00000001102d6529 -[WebTileLayer drawInContext:] + 73 (WebTileLayer.mm:53) 12 com.apple.QuartzCore 0x00007fff9014adf0 CABackingStoreUpdate_ + 3474 13 com.apple.QuartzCore 0x00007fff90149aa6 CA::Layer::display_() + 1188 14 com.apple.QuartzCore 0x00007fff90149425 CA::Layer::display_if_needed(CA::Transaction*) + 593 15 com.apple.QuartzCore 0x00007fff90148c3f CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 35 16 com.apple.QuartzCore 0x00007fff9013e417 CA::Context::commit_transaction(CA::Transaction*) + 261 17 com.apple.QuartzCore 0x00007fff9013e1e7 CA::Transaction::commit() + 369 18 com.apple.QuartzCore 0x00007fff9013e003 CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 63 19 com.apple.CoreFoundation 0x00007fff8ff31417 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23 20 com.apple.CoreFoundation 0x00007fff8ff31381 __CFRunLoopDoObservers + 369 21 com.apple.CoreFoundation 0x00007fff8ff0c104 CFRunLoopRunSpecific + 324 22 com.apple.HIToolbox 0x00007fff93cb0eb4 RunCurrentEventLoopInMode + 209 23 com.apple.HIToolbox 0x00007fff93cb0c52 ReceiveNextEventCommon + 356 24 com.apple.HIToolbox 0x00007fff93cb0ae3 BlockUntilNextEventMatchingListInMode + 62 25 com.apple.AppKit 0x00007fff8e598533 _DPSNextEvent + 685 26 com.apple.AppKit 0x00007fff8e597df2 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128 27 com.apple.AppKit 0x00007fff8e58f1a3 -[NSApplication run] + 517 28 com.apple.WebCore 0x000000010fec7f92 WebCore::RunLoop::run() + 114 (RunLoopMac.mm:44) 29 com.apple.WebKit2 0x000000010c00523c int WebKit::ChildProcessMain<WebKit::WebProcess, WebKit::WebContentProcessMainDelegate>(int, char**) + 604 (ChildProcessEntryPoint.h:92) 30 com.apple.WebKit2 0x000000010c004fcb WebContentProcessMain + 27 (WebContentProcessMain.mm:179) 31 com.apple.WebProcess 0x000000010bc9bd1d WebKit::BootstrapMain(int, char**) + 381 32 com.apple.WebProcess 0x000000010bc9bb92 main + 34 33 libdyld.dylib 0x00007fff91d587e1 start + 1
Attachments
Patch (1.91 KB, patch)
2013-10-09 17:40 PDT, Simon Fraser (smfr)
thorton: review+
Alexey Proskuryakov
Comment 1 2013-09-25 14:08:51 PDT
This seems to have recently started to happen on platform/mac-wk2/tiled-drawing tests a lot.
Ryosuke Niwa
Comment 2 2013-09-25 14:10:31 PDT
The following functions don't seem to update the layout. WebCore::RenderLayer::paintLayerContents RenderLayerBacking::paintContents WebCore::GraphicsLayer::paintGraphicsLayerContents WebCore::GraphicsLayerCA::platformCALayerPaintContents drawLayerContents TileController::drawLayer -[WebTileLayer drawInContext:] Who is responsible for updating the layout here?
Tim Horton
Comment 3 2013-09-26 10:37:02 PDT
(In reply to comment #2) > The following functions don't seem to update the layout. > > WebCore::RenderLayer::paintLayerContents > RenderLayerBacking::paintContents > WebCore::GraphicsLayer::paintGraphicsLayerContents > WebCore::GraphicsLayerCA::platformCALayerPaintContents > drawLayerContents > TileController::drawLayer > -[WebTileLayer drawInContext:] > > Who is responsible for updating the layout here? LayerFlushScheduler’s run loop observer is always responsible for updating layout before CA painting callbacks occur.
Tim Horton
Comment 4 2013-09-26 12:37:32 PDT
https://bugs.webkit.org/show_bug.cgi?id=121859 could potentially mean that this happens a lot more often, so I may end up blocked on this/having to look at this soon.
Alexey Proskuryakov
Comment 5 2013-10-04 10:56:27 PDT
<rdar://problem/15153588> Still happening a lot.
Simon Fraser (smfr)
Comment 6 2013-10-09 17:40:35 PDT
Simon Fraser (smfr)
Comment 7 2013-10-09 17:52:56 PDT
https://trac.webkit.org/r157198 This may not fix the non-TestWebKitAPI assertions. We'll see.
Alexey Proskuryakov
Comment 8 2013-10-10 10:11:55 PDT
With a night worth of testing, it seems that maybe it did fix assertions on platform/mac-wk2/tiled-drawing tests!
Simon Fraser (smfr)
Comment 9 2013-10-10 10:20:39 PDT
Amazing!
Note You need to log in before you can comment on or make changes to this bug.