Bug 33972 - Assertion failure in FrameLoader::checkLoadComplete()
Summary: Assertion failure in FrameLoader::checkLoadComplete()
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Page Loading (show other bugs)
Version: 528+ (Nightly build)
Hardware: Mac OS X 10.6
: P2 Normal
Assignee: Alexey Proskuryakov
URL:
Keywords: InRadar
Depends on:
Blocks: 29692
  Show dependency treegraph
 
Reported: 2010-01-21 14:39 PST by Alexey Proskuryakov
Modified: 2010-01-21 15:21 PST (History)
0 users

See Also:


Attachments
proposed fix (1.28 KB, patch)
2010-01-21 14:47 PST, Alexey Proskuryakov
darin: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Alexey Proskuryakov 2010-01-21 14:39:37 PST
I'm frequently seeing assertion failure in FrameLoader::checkLoadComplete():

    ASSERT(m_client->hasWebView());

I couldn't make a test case, but the sequence of events if roughly as follows:
- a subframe is detached (FrameLoader::detachFromParent is called);
- this results in a Frame::pageDestroyed() call (which is a lie, as Page is not destroyed);
- after a while, FrameLoader's checkTimer fires;
- since Frame::m_page is null now, m_client->hasWebView() returns false.

This doesn't always happen, because usually, Frame is destructed before checkTimer has a chance to fire, canceling the timer. But Frame destruction is not totally deterministic, and I see Frame::m_lifeSupportTimer timer sometimes keep it alive long enough for FrameLoader::checkTimer to fire.
Comment 1 Alexey Proskuryakov 2010-01-21 14:40:02 PST
<rdar://problem/7545095>
Comment 2 Alexey Proskuryakov 2010-01-21 14:47:57 PST
Created attachment 47147 [details]
proposed fix
Comment 3 Alexey Proskuryakov 2010-01-21 15:21:24 PST
Committed <http://trac.webkit.org/changeset/53655>.