[Webkit-unassigned] [Bug 20831] New: Very slow <input type="search">. 100% CPU usage for each key press.

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Sat Sep 13 12:52:33 PDT 2008


https://bugs.webkit.org/show_bug.cgi?id=20831

           Summary: Very slow <input type="search">. 100% CPU usage for each
                    key press.
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: Macintosh
        OS/Version: Mac OS X 10.5
            Status: UNCONFIRMED
          Severity: Normal
          Priority: P2
         Component: Text
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: john.engelhart at gmail.com


Very, very slow interactive response for a <input type="search"> field.  CPU
jumps to 100% for each key press, and can take a few seconds for just a dozen
keystrokes.

I've condensed down the HTML that reproduces the bug.  Tried with nightly
r35942 and Mac OS X Safari 4.0 (5528.1, I think the latest developer preview
available).  I also grabbed a stack sample and included the heavy hitting part
in the html comments.

I have no idea which of the bits and pieces cause the problem, so the HTML code
that I'm including  is the result of distilling the problem down in to
something minimal that definitely reproduces the issue.

The nightly build is noticeably more sluggish than the Safari 4 developer
preview, but not by much.

--- begin HTML code to reproduce problem ---

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <style type="text/css">
.alphaTopAndBottomFade { border-bottom: 1px solid rgba(0,0,0,0.075);
border-top: 1px solid rgba(0,0,0,0.2); border-left: 1px solid rgba(0,0,0,0.05);
border-right: 1px solid rgba(0,0,0,0.05); -webkit-box-shadow: 0px 0px 1px
rgba(0,0,0,0.2);  padding-bottom: 0.5em; margin-bottom: 0.5em; background:
-webkit-gradient(linear, left top, left bottom, from(rgb(213,221,231)),
color-stop(0.33, rgb(255,255,255)), color-stop(0.66, rgb(255,255,255)),
to(rgb(240,240,240))); -webkit-border-radius: 5px; -moz-border-radius: 5px; }

.table { display: table; }
.table > .row { display: table-row; }
.table > .row > .cell { display: table-cell; }

    </style>


  </head>
  <body>

    <div class="content" style="">

      <div class="alphaTopAndBottomFade" style="position: relative;">

        <div class="table" style="width: 100%; height: 300px; padding: 0.375em
3ex;"><div class="row">
            <div class="cell" style="width: 50%; height: 100%;">
              <div style="width: 100%; height: 100%; position: relative;">
                <div style="margin: 0em 3ex; color: #333; font-family: 'Lucida
Grande'; font-weight: normal;">
                  <div style="font-size: 18px; font-weight:
normal;">Title</div>
                  <div style="color: #666; margin-left: 1ex; margin-top:
0.25em;">Subtitle!</div>
                </div>

                <div style="font: 11px normal 'Lucida Grande'; color: #555">
                  <p>Yay for us.. and stuff</p>
                  <p>And some more bits and pieces.</p>

                  <!-- This input search box is very, very slugish to respond
to key presses, and chews up 100% CPU on a G4 PPC PowerBook -->

                  <!--
I don't know which of the above pieces contribute to the problem, but I sliced
it down to just these bits that reproduce the problem.

Note: When I was trimming things down to a useable example, there's definitely
some point where the problem 'mostly' goes away.

Also, I don't know if this is a WebKit bug or a Mac OS X compositor performance
issue.  

-->

                  <input type="search" name="req" value="" results="5"
placeholder="Search This" autosave="">

<!--

Stack sample during bad behavior (clipped for brevity, heaviest call stack
only):

Analysis of sampling Safari (pid 37724) every 10 milliseconds
Call graph:
    1254 Thread_2503
      1254 0xbffff050
        1254 0xb65a0
          1254 NSApplicationMain
            1254 -[NSApplication run]
              1200 0x7dac
                1200 -[NSApplication
nextEventMatchingMask:untilDate:inMode:dequeue:]
                  1200 _DPSNextEvent
                    966 BlockUntilNextEventMatchingListInMode
                      966 ReceiveNextEventCommon
                        965 RunCurrentEventLoopInMode
                          962 CFRunLoopRunSpecific
                            843 __CFRunLoopDoObservers
                              834 _handleWindowNeedsDisplay
                                831 0x1ff80
                                  831 -[NSWindow displayIfNeeded]
                                    826 -[NSView
_displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:]
                                      807 -[NSThemeFrame
_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]
                                        807 -[NSView
_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]
                                          806 -[NSView
_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]
                                            803 -[NSView
_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]
                                              798 -[NSView
_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]
                                                782 -[NSView
_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]
                                                  774 -[NSView
_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]
                                                    773 -[NSView
_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]
                                                      772 -[NSView
_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]
                                                        771
-[WebHTMLView(WebPrivate)
_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]
                                                          771 -[NSView
_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]
                                                            771 -[NSView
_drawRect:clip:]
                                                              771 -[WebHTMLView
drawRect:]
                                                                771
-[WebHTMLView drawSingleRect:]
                                                                  771
-[WebFrame(WebInternal) _drawRect:]
                                                                    771
WebCore::Frame::paint(WebCore::GraphicsContext*, WebCore::IntRect const&)
                                                                      771
WebCore::RenderLayer::paintLayer(WebCore::RenderLayer*,
WebCore::GraphicsContext*, WebCore::IntRect const&, bool,
WebCore::PaintRestriction, WebCore::RenderObject*, bool)
                                                                        770
WebCore::RenderLayer::paintLayer(WebCore::RenderLayer*,
WebCore::GraphicsContext*, WebCore::IntRect const&, bool,
WebCore::PaintRestriction, WebCore::RenderObject*, bool)
                                                                          765
WebCore::RenderLayer::paintLayer(WebCore::RenderLayer*,
WebCore::GraphicsContext*, WebCore::IntRect const&, bool,
WebCore::PaintRestriction, WebCore::RenderObject*, bool)
                                                                            758
WebCore::RenderBlock::paint(WebCore::RenderObject::PaintInfo&, int, int)
                                                                             
757 WebCore::RenderBlock::paintObject(WebCore::RenderObject::PaintInfo&, int,
int)
                                                                               
750 WebCore::RenderBox::paintBoxDecorations(WebCore::RenderObject::PaintInfo&,
int, int)
                                                                               
  744 WebCore::RenderBox::paintFillLayer(WebCore::RenderObject::PaintInfo
const&, WebCore::Color const&, WebCore::FillLayer const*, int, int, int, int,
int, int, WebCore::CompositeOperator)
                                                                               
    744
WebCore::RenderBox::paintFillLayerExtended(WebCore::RenderObject::PaintInfo
const&, WebCore::Color const&, WebCore::FillLayer const*, int, int, int, int,
int, int, WebCore::InlineFlowBox*, WebCore::CompositeOperator)
                                                                               
      744 WebCore::GraphicsContext::drawTiledImage(WebCore::Image*,
WebCore::IntRect const&, WebCore::IntPoint const&, WebCore::IntSize const&,
WebCore::CompositeOperator)
                                                                               
        744 WebCore::Image::drawTiled(WebCore::GraphicsContext*,
WebCore::FloatRect const&, WebCore::FloatPoint const&, WebCore::FloatSize
const&, WebCore::CompositeOperator)
                                                                               
          744 WebCore::GeneratedImage::drawPattern(WebCore::GraphicsContext*,
WebCore::FloatRect const&, WebCore::AffineTransform const&, WebCore::FloatPoint
const&, WebCore::CompositeOperator, WebCore::FloatRect const&)
                                                                               
            635 WebCore::Image::drawPattern(WebCore::GraphicsContext*,
WebCore::FloatRect const&, WebCore::AffineTransform const&, WebCore::FloatPoint
const&, WebCore::CompositeOperator, WebCore::FloatRect const&)
                                                                               
              635 CGContextDrawTiledImage
                                                                               
                635 CGContextFillRect
                                                                               
                  635 CGContextFillRects
                                                                               
                    635 ripc_DrawRects
                                                                               
                      635 ripc_Render
                                                                               
                        628 ripc_GetColor
                                                                               
                          624 ripc_TilePattern
                                                                               
                            624 ripc_DrawImages
                                                                               
                              623 ripc_RenderImage
                                                                               
                                623 ripl_BltImage
                                                                               
                                  623 ripl_Mark
                                                                               
                                    623 ARGB32_image
                                                                               
                                      623 vecCGSBlendXXXX8888Permute
                                                                               
                                        623 vecCGSBlendXXXX8888Permute
                                                                               
                              1 ripc_AcquireImage
                                                                               
                                1 CGSImageDataLock
                                                                               
                                  1 img_reference
                                                                               
                                    1 img_reference
                                                                               
                          4 ripl_Create
                                                                               
                            4 mem_allocate
                                                                               
                              3 mmap
                                                                               
                                3 mmap
                                                                               
                              1 mem_allocate
                                                                               
                        6 ripl_release
                                                                               
                          6 mem_deallocate
                                                                               
                            6 munmap$UNIX2003
                                                                               
                              6 munmap$UNIX2003
                                                                               
                        1 ripl_BltShape
                                                                               
                          1 dyld_stub_CGSBoundsIntersection
                                                                               
                            1 dyld_stub_CGSBoundsIntersection
                                                                               
            38 WebCore::ImageBuffer::create(WebCore::IntSize const&, bool)
                                                                               
              34 WTF::tryFastCalloc(unsigned long, unsigned long)
                                                                               
                34 __bzero
                                                                               
                  34 __bzero
                                                                               
              4 CGBitmapContextCreate


-->               
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>

  </body>
</html>


-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.



More information about the webkit-unassigned mailing list