[Webkit-unassigned] [Bug 74855] New: chrome.dll!WebCore::RenderBlock::layout+3 RecursionSOV (778c8b32c6289e0e4786686a99048cba)

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Dec 19 05:39:06 PST 2011


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

           Summary: chrome.dll!WebCore::RenderBlock::layout+3 RecursionSOV
                    (778c8b32c6289e0e4786686a99048cba)
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: PC
        OS/Version: Windows Vista
            Status: NEW
          Severity: Normal
          Priority: P1
         Component: HTML Editing
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: skylined at chromium.org
                CC: rniwa at webkit.org


Created an attachment (id=119851)
 --> (https://bugs.webkit.org/attachment.cgi?id=119851&action=review)
Repro

Chromium: http://code.google.com/p/chromium/issues/detail?id=108054
<html>
  <head>
    <style>
      * {
        position: absolute;
      }
    </style>
    <script>
      window.onload = function() {
        document.designMode="on";
        document.execCommand("selectall");
        document.execCommand("insertparagraph");
        document.execCommand("insertimage");
        document.execCommand("selectall");
        document.execCommand("strikethrough");
        document.execCommand("InsertNewlineInQuotedContent");
        document.execCommand("InsertHorizontalRule");
        // The following line can be removed, in which case the repro only
        // consumes CPU exponentially, but does not trigger a stack exhaustion.
        document.execCommand("InsertOrderedList");
        // Things start to get exponentially slower from here on until we hit
        // a stack exhaustion after only a few executions:
        var i = 0;
        while (1) {
          var iStartTime = new Date().valueOf();
          document.execCommand("insertunorderedlist");
          var nTime = (new Date().valueOf() - iStartTime) / 1000;
          document.title = ('Loop #' + ++i + ' took ' + nTime + ' seconds.');
        }
      };
    </script>
  </head>
  <body>
    x
  </body>
</html>

Loop run time seems to increase exponentially. The repro as-is results in a stack overflow after about 10 loops for me. Remove one line (mentioned in the repro) and  it will not crash, but only consume CPU.

There seem to be two loops involved, the first is seen a few tens of times at the top of the stack, the later is seen a few thousand times below it on the stack (and probably the true cause):
                  chrome.dll!WebCore::RenderBlock::layoutBlock
                  chrome.dll!WebCore::RenderBlock::layout
                  chrome.dll!WebCore::RenderBlock::layoutPositionedObjects

                  chrome.dll!WebCore::RenderBlock::simplifiedLayout
                  chrome.dll!WebCore::RenderBlock::layoutBlock
                  chrome.dll!WebCore::RenderBlock::layout
                  chrome.dll!WebCore::RenderBlock::layoutPositionedObjects

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



More information about the webkit-unassigned mailing list