I'm frequently seeing assertion failure in FrameLoader::checkLoadComplete():
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.
Created attachment 47147 [details]