Bug 43167

Summary: SHOULD NEVER BE REACHED assertion when switching tabs with composited content
Product: WebKit Reporter: Simon Fraser (smfr) <simon.fraser>
Component: Layout and RenderingAssignee: Simon Fraser (smfr) <simon.fraser>
Status: RESOLVED FIXED    
Severity: Normal    
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Macintosh   
OS: OS X 10.5   
Attachments:
Description Flags
Testcase
none
Patch darin: review+

Description Simon Fraser (smfr) 2010-07-28 18:17:54 PDT
Created attachment 62909 [details]
Testcase

Load the attached testcase in Safari, switch to another tab, then switch back. You often hit:

SHOULD NEVER BE REACHED
(RenderLayerBacking.cpp:941 void WebCore::RenderLayerBacking::paintIntoLayer(WebCore::RenderLayer*, WebCore::GraphicsContext*, const WebCore::IntRect&, WebCore::PaintBehavior, WebCore::GraphicsLayerPaintingPhase, WebCore::RenderObject*))
Comment 1 Simon Fraser (smfr) 2010-07-29 11:04:56 PDT
The issue here is that as the root layer attachment changes, setDrawsContent(true) gets called on the RenderView's compositing layer, which in turn cause a -setNeedsDisplay. That should never happen.
Comment 2 Simon Fraser (smfr) 2010-07-29 11:15:16 PDT
Created attachment 62970 [details]
Patch
Comment 3 Darin Adler 2010-07-29 11:18:57 PDT
Comment on attachment 62970 [details]
Patch

Can you land a manual test? Just an HTML file with steps to reproduce in it. We do have a directory full of manual tests, although I’m not sure we get maximum value from them.
Comment 4 Simon Fraser (smfr) 2010-07-29 11:43:19 PDT
http://trac.webkit.org/changeset/64296, including manual test.