Bug 56062

Summary: Reproducible ASSERTION failure going to NYTimes.com
Product: WebKit Reporter: Jessie Berlin <jberlin>
Component: WebCore JavaScriptAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: aestes, alice.barraclough, ap, darin, jberlin, yong.li.webkit
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   

Description Jessie Berlin 2011-03-09 17:30:23 PST
This is also reproducible going to other major websites.

After some bisecting, the assertion failure appears to have started around http://trac.webkit.org/changeset/80478.

>  1 com.apple.WebCore              0x103775887 WebCore::SuspendableTimer::resume() + 0x5b (SuspendableTimer.cpp:76)
   2 com.apple.WebCore              0x103775825 non-virtual thunk to WebCore::SuspendableTimer::resume() + 0x25
   3 com.apple.WebCore              0x10369b46e WebCore::ScriptExecutionContext::resumeActiveDOMObjects() + 0x104 (ScriptExecutionContext.cpp:259)
   4 com.apple.WebCore              0x102836762 WebCore::Document::resumeScheduledTasks() + 0xf0 (Document.cpp:4772)
   5 com.apple.WebCore              0x102ae64f8 WebCore::FrameLoader::setDefersLoading(bool) + 0x196 (FrameLoader.cpp:263)
   6 com.apple.WebCore              0x1033834e1 WebCore::Page::setDefersLoading(bool) + 0xa5 (Page.cpp:548)
   7 com.apple.WebKit2              0x1010b4a30 WebKit::WebPage::setDefersLoading(bool) + 0x44 (WebPage.cpp:454)
   8 com.apple.WebKit2              0x101146bb7 WKBundlePageSetDefersLoading + 0x37 (WKBundlePage.cpp:114)

This also appears to have caused some inspector test failures:

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

Should we roll out this change? It is getting rather annoying to work with this assertion failure getting triggered so often (happens within 10 seconds of browsing)

<rdar://problem/9098548>
Comment 1 Jessie Berlin 2011-03-09 17:31:35 PST
The assertion that is failing is ASSERT(m_suspended).
Comment 2 Alexey Proskuryakov 2011-03-10 11:06:01 PST
*** Bug 56073 has been marked as a duplicate of this bug. ***
Comment 3 Andy Estes 2011-03-10 11:33:35 PST
Comment from https://bugs.webkit.org/show_bug.cgi?id=55941:

 Comment #6 From Pavel Feldman 2011-03-10 07:19:04 PST (-) [reply] 
Rolled out r80478 as r80718

Committing to http://svn.webkit.org/repository/webkit/trunk ...
    D    Source/WebCore/manual-tests/database-callback-deferred.html
    M    LayoutTests/ChangeLog
    M    LayoutTests/platform/gtk/Skipped
    M    Source/WebCore/ChangeLog
    M    Source/WebCore/dom/Document.cpp
    M    Source/WebCore/dom/Document.h
    M    Source/WebCore/loader/FrameLoader.cpp
    M    Source/WebCore/page/PageGroupLoadDeferrer.cpp
Committed r80718
Comment 4 Yong Li 2011-12-07 07:57:22 PST
This seems like a conflict between WKBundlePageSetDefersLoading and PageGroupLoadDeferrer, and should be fixed there but not by rolling out r80478 which does fix missing callback problme. Should we reopen this one?
Comment 5 Yong Li 2011-12-07 08:05:22 PST
Never mind. I see why r80478 causes the crash now:

Without the patch Page::setDefersLoading doesn't do this:

                for (Frame* frame = otherPage->mainFrame(); frame; frame = frame->tree()->traverseNext()) {
                    frame->document()->suspendScriptedAnimationControllerCallbacks();
                    frame->document()->suspendActiveDOMObjects(ActiveDOMObject::WillShowDialog);
                    frame->document()->scriptRunner()->suspend();
                    if (DocumentParser* parser = frame->document()->parser())
                        parser->suspendScheduledTasks();
                }

So I'll remove this change from my patch