Bug 68314 - REGRESSION(r95239): Hang below RenderLayer::paintLayer at ADC dev forums and Twitter
Summary: REGRESSION(r95239): Hang below RenderLayer::paintLayer at ADC dev forums and ...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: New Bugs (show other bugs)
Version: 528+ (Nightly build)
Hardware: Mac (Intel) OS X 10.7
: P1 Major
Assignee: Dave Hyatt
URL: https://devforums.apple.com/thread/12...
Keywords: InRadar, Regression
: 68317 68326 (view as bug list)
Depends on:
Blocks:
 
Reported: 2011-09-17 12:23 PDT by Jon
Modified: 2011-09-20 13:25 PDT (History)
9 users (show)

See Also:


Attachments
Patch (42.13 KB, patch)
2011-09-20 13:16 PDT, Dave Hyatt
darin: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Jon 2011-09-17 12:23:34 PDT
When attempting to load the thread in the URL, Safari's WebProcess will hang with 100% CPU usage on a single core. This is on Lion, Safari 5.1. Change seems to have occurred between r95201 and r95358. Here is a sample from the process. Perhaps the issue is in WebCore::RenderLayer?


Call graph:
    2553 Thread_666882   DispatchQueue_1: com.apple.main-thread  (serial)
    + 2553 start  (in WebProcess) + 52  [0x103897d64]
    +   2553 main  (in WebProcess) + 234  [0x103897e56]
    +     2553 WebKitMain  (in WebKit2) + 268  [0x103a3797c]
    +       2553 WebKit::WebProcessMain(WebKit::CommandLine const&)  (in WebKit2) + 587  [0x103a62bf9]
    +         2553 RunLoop::run()  (in WebKit2) + 125  [0x103a1cf2b]
    +           2553 -[NSApplication run]  (in AppKit) + 470  [0x7fff8c9cd5bd]
    +             2553 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]  (in AppKit) + 135  [0x7fff8c9d0c85]
    +               2553 _DPSNextEvent  (in AppKit) + 659  [0x7fff8c9d1381]
    +                 2553 BlockUntilNextEventMatchingListInMode  (in HIToolbox) + 62  [0x7fff8a0444ca]
    +                   2553 ReceiveNextEventCommon  (in HIToolbox) + 355  [0x7fff8a04463d]
    +                     2553 RunCurrentEventLoopInMode  (in HIToolbox) + 277  [0x7fff8a03d3d3]
    +                       2553 CFRunLoopRunSpecific  (in CoreFoundation) + 230  [0x7fff90560c16]
    +                         2553 __CFRunLoopRun  (in CoreFoundation) + 1617  [0x7fff905615a1]
    +                           2553 __CFRunLoopDoTimer  (in CoreFoundation) + 534  [0x7fff90580c36]
    +                             2553 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__  (in CoreFoundation) + 20  [0x7fff905810e4]
    +                               2553 RunLoop::TimerBase::timerFired(__CFRunLoopTimer*, void*)  (in WebKit2) + 77  [0x103a1cd85]
    +                                 2553 WebKit::DrawingAreaImpl::display()  (in WebKit2) + 189  [0x103ad5ebb]
    +                                   2553 WebKit::DrawingAreaImpl::display(WebKit::UpdateInfo&)  (in WebKit2) + 1000  [0x103ad595e]
    +                                     2553 WebKit::WebPage::drawRect(WebCore::GraphicsContext&, WebCore::IntRect const&)  (in WebKit2) + 145  [0x103a3c15f]
    +                                       2553 WebCore::ScrollView::paint(WebCore::GraphicsContext*, WebCore::IntRect const&)  (in WebCore) + 559  [0x1048d01f1]
    +                                         2553 WebCore::FrameView::paintContents(WebCore::GraphicsContext*, WebCore::IntRect const&)  (in WebCore) + 624  [0x1042b8090]
    +                                           2553 WebCore::RenderLayer::paint(WebCore::GraphicsContext*, WebCore::IntRect const&, unsigned int, WebCore::RenderObject*)  (in WebCore) + 71  [0x1047fa661]
    +                                             2553 WebCore::RenderLayer::paintLayer(WebCore::RenderLayer*, WebCore::GraphicsContext*, WebCore::IntRect const&, unsigned int, WebCore::RenderObject*, WTF::HashMap<WebCore::OverlapTestRequestClient*, WebCore::IntRect, WTF::PtrHash<WebCore::OverlapTestRequestClient*>, WTF::HashTraits<WebCore::OverlapTestRequestClient*>, WTF::HashTraits<WebCore::IntRect> >*, unsigned int)  (in WebCore) + 4159  [0x1047f98fb]
    +                                               2553 WebCore::RenderLayer::paintLayer(WebCore::RenderLayer*, WebCore::GraphicsContext*, WebCore::IntRect const&, unsigned int, WebCore::RenderObject*, WTF::HashMap<WebCore::OverlapTestRequestClient*, WebCore::IntRect, WTF::PtrHash<WebCore::OverlapTestRequestClient*>, WTF::HashTraits<WebCore::OverlapTestRequestClient*>, WTF::HashTraits<WebCore::IntRect> >*, unsigned int)  (in WebCore) + 4159  [0x1047f98fb]
    +                                                 2553 WebCore::RenderLayer::paintLayer(WebCore::RenderLayer*, WebCore::GraphicsContext*, WebCore::IntRect const&, unsigned int, WebCore::RenderObject*, WTF::HashMap<WebCore::OverlapTestRequestClient*, WebCore::IntRect, WTF::PtrHash<WebCore::OverlapTestRequestClient*>, WTF::HashTraits<WebCore::OverlapTestRequestClient*>, WTF::HashTraits<WebCore::IntRect> >*, unsigned int)  (in WebCore) + 4159  [0x1047f98fb]
    +                                                   2553 WebCore::RenderLayer::paintLayer(WebCore::RenderLayer*, WebCore::GraphicsContext*, WebCore::IntRect const&, unsigned int, WebCore::RenderObject*, WTF::HashMap<WebCore::OverlapTestRequestClient*, WebCore::IntRect, WTF::PtrHash<WebCore::OverlapTestRequestClient*>, WTF::HashTraits<WebCore::OverlapTestRequestClient*>, WTF::HashTraits<WebCore::IntRect> >*, unsigned int)  (in WebCore) + 4159  [0x1047f98fb]
    +                                                     2553 WebCore::RenderLayer::paintLayer(WebCore::RenderLayer*, WebCore::GraphicsContext*, WebCore::IntRect const&, unsigned int, WebCore::RenderObject*, WTF::HashMap<WebCore::OverlapTestRequestClient*, WebCore::IntRect, WTF::PtrHash<WebCore::OverlapTestRequestClient*>, WTF::HashTraits<WebCore::OverlapTestRequestClient*>, WTF::HashTraits<WebCore::IntRect> >*, unsigned int)  (in WebCore) + 4159  [0x1047f98fb]
    +                                                       2553 WebCore::RenderLayer::paintLayer(WebCore::RenderLayer*, WebCore::GraphicsContext*, WebCore::IntRect const&, unsigned int, WebCore::RenderObject*, WTF::HashMap<WebCore::OverlapTestRequestClient*, WebCore::IntRect, WTF::PtrHash<WebCore::OverlapTestRequestClient*>, WTF::HashTraits<WebCore::OverlapTestRequestClient*>, WTF::HashTraits<WebCore::IntRect> >*, unsigned int)  (in WebCore) + 2682  [0x1047f9336]
    +                                                         1671 WebCore::RenderLayer::clipToRect(WebCore::RenderLayer*, WebCore::GraphicsContext*, WebCore::IntRect const&, WebCore::ClipRect const&, WebCore::BorderRadiusClippingRule)  (in WebCore) + 215  [0x1047f50c9]
    +                                                         ! 1671 WebCore::RenderView::containingBlock() const  (in WebCore) + 0,7  [0x10488ba60,0x10488ba67]
    +                                                         882 WebCore::RenderLayer::clipToRect(WebCore::RenderLayer*, WebCore::GraphicsContext*, WebCore::IntRect const&, WebCore::ClipRect const&, WebCore::BorderRadiusClippingRule)  (in WebCore) + 206,215  [0x1047f50c0,0x1047f50c9]
    2553 Thread_666888   DispatchQueue_2: com.apple.libdispatch-manager  (serial)
    + 2553 _dispatch_mgr_thread  (in libdispatch.dylib) + 54  [0x7fff8be6a14e]
    +   2553 _dispatch_mgr_invoke  (in libdispatch.dylib) + 923  [0x7fff8be6b5be]
    +     2553 kevent  (in libsystem_kernel.dylib) + 10  [0x7fff897ea7e6]
    2553 Thread_667020: JavaScriptCore::BlockFree
    + 2553 thread_start  (in libsystem_c.dylib) + 13  [0x7fff8ed15b75]
    +   2553 _pthread_start  (in libsystem_c.dylib) + 335  [0x7fff8ed128bf]
    +     2553 JSC::Heap::blockFreeingThreadStartFunc(void*)  (in JavaScriptCore) + 9  [0x103f0c769]
    +       2553 JSC::Heap::blockFreeingThreadMain()  (in JavaScriptCore) + 300  [0x103f0c72c]
    +         2553 WTF::ThreadCondition::timedWait(WTF::Mutex&, double)  (in JavaScriptCore) + 151  [0x103ed9387]
    +           2553 _pthread_cond_wait  (in libsystem_c.dylib) + 840  [0x7fff8ed16274]
    +             2553 __psynch_cvwait  (in libsystem_kernel.dylib) + 10  [0x7fff897e9bca]
    2553 Thread_667021: com.apple.NSURLConnectionLoader
    + 2553 thread_start  (in libsystem_c.dylib) + 13  [0x7fff8ed15b75]
    +   2553 _pthread_start  (in libsystem_c.dylib) + 335  [0x7fff8ed128bf]
    +     2553 __NSThread__main__  (in Foundation) + 1575  [0x7fff87b51e9e]
    +       2553 -[NSThread main]  (in Foundation) + 68  [0x7fff87b51f26]
    +         2553 +[NSURLConnection(NSURLConnectionReallyInternal) _resourceLoadLoop:]  (in Foundation) + 335  [0x7fff87b5d7d3]
    +           2553 CFRunLoopRunSpecific  (in CoreFoundation) + 230  [0x7fff90560c16]
    +             2553 __CFRunLoopRun  (in CoreFoundation) + 1204  [0x7fff90561404]
    +               2553 __CFRunLoopServiceMachPort  (in CoreFoundation) + 188  [0x7fff90558c9c]
    +                 2553 mach_msg  (in libsystem_kernel.dylib) + 73  [0x7fff897e7d71]
    +                   2553 mach_msg_trap  (in libsystem_kernel.dylib) + 10  [0x7fff897e867a]
    2553 Thread_667286: com.apple.CFSocket.private
      2553 thread_start  (in libsystem_c.dylib) + 13  [0x7fff8ed15b75]
        2553 _pthread_start  (in libsystem_c.dylib) + 335  [0x7fff8ed128bf]
          2553 __CFSocketManager  (in CoreFoundation) + 1355  [0x7fff905aa13b]
            2553 __select  (in libsystem_kernel.dylib) + 10  [0x7fff897e9df2]
Comment 1 Jon 2011-09-17 12:33:09 PDT
I've also noticed extremely high CPU usage on the failblog family of sites, but their traces aren't similar, so I don't know if it's related.
Comment 2 Mark Rowe (bdash) 2011-09-17 18:14:27 PDT
*** Bug 68317 has been marked as a duplicate of this bug. ***
Comment 3 Mark Rowe (bdash) 2011-09-17 18:22:18 PDT
A dupe of this provides the following steps:
1) Load <http://twitter.com/> and log in.
2) Click on a tweet in the feed.

At this point the web process will hang rather than revealing the tweet plus other details in the right side of the page.
Comment 4 Mark Rowe (bdash) 2011-09-17 18:23:11 PDT
This started with r95239.
Comment 5 Radar WebKit Bug Importer 2011-09-17 18:24:38 PDT
<rdar://problem/10142722>
Comment 6 Mark Rowe (bdash) 2011-09-18 17:08:32 PDT
*** Bug 68326 has been marked as a duplicate of this bug. ***
Comment 7 Dimitri Glazkov (Google) 2011-09-20 11:39:03 PDT
http://crbug.com/97079
Comment 8 Dave Hyatt 2011-09-20 13:16:20 PDT
Created attachment 108045 [details]
Patch
Comment 9 Simon Fraser (smfr) 2011-09-20 13:19:24 PDT
Comment on attachment 108045 [details]
Patch

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

> LayoutTests/fast/clip/overflow-border-radius-fixed-position.html:5
> +<div style="width:100px;height:100px;position:fixed;overflow:hidden;-webkit-border-radius:12px">

Why the prefixed border-radius? Maybe make it 30% so it's more pronounced.
Comment 10 Dave Hyatt 2011-09-20 13:25:22 PDT
Fixed in r95567.