[webkit-dev] Frameloader parsing isn't cancelling for our port.

Jason Rukman JasonR at bsquare.com
Tue Nov 3 11:06:50 PST 2009


As part of our port I'm occasionally hitting the following assert in FrameLoad::addData; but do not have a reproducible case yet.  I think this is most likely happening for failures from the network stack occurring and then a new request being issued (I'm using ResourceHandleWin in our build).

    ASSERT(m_frame->document()->parsing());

This is happening during cancel(ling) any pending loading phase during a new request.  Is there something that I need to add to the client to cancel any outstanding requests?  I'm just using the my own version of the winlauncher code to make the requests which doesn't have any logic for cancelling existing ones.

The stack trace during this assert shows that it's from a check to stop loading previous requests and somehow I get into a state that the FrameLoader believes it is still parsing data and triggers the assert during the cancel operation.  How does the FrameLoader parsing state normally reset?

---- stack trace ---

WEBKIT!WebCore::FrameLoader::addData(const char * 0x00000000, int 0)  line 1439 + 72 bytes WEBKIT!WebFrameLoaderClient::receivedData(const char * 0x00000000, int 9082496, const WebCore::String & {...})  line 484 WEBKIT!WebFrameLoaderClient::committedLoad(WebCore::DocumentLoader * 0x008a6f20, const char * 0x00000000, int 0)  line 455 WEBKIT!WebFrameLoaderClient::finishedLoading(WebCore::DocumentLoader * 0x008a6f20)  line 493 WEBKIT!WebCore::FrameLoader::finishedLoadingDocument(WebCore::DocumentLoader * 0x0000ab5f)  line 2735
WEBKIT!WebCore::DocumentLoader::finishedLoading()  line 330
WEBKIT!WebCore::FrameLoader::finishedLoading()  line 2675
WEBKIT!WebCore::MainResourceLoader::didFinishLoading()  line 394 WEBKIT!WebCore::ResourceLoader::didFinishLoading(WebCore::ResourceHandle * 0x008ac460)  line 408
WEBKIT!WebCore::ResourceHandle::finish()  line 466 WEBKIT!WebCore::ResourceHandle::cancel(const WebCore::ResourceHandleClient * 0x00000000)  line 1063 WEBKIT!WebCore::ResourceLoader::didCancel(const WebCore::ResourceError & {...})  line 334 WEBKIT!WebCore::MainResourceLoader::didCancel(const WebCore::ResourceError & {...})  line 103 WEBKIT!WebCore::ResourceLoader::cancel(const WebCore::ResourceError & {...})  line 354 + 56 bytes
WEBKIT!WebCore::ResourceLoader::cancel()  line 344 + 52 bytes WEBKIT!WebCore::DocumentLoader::stopLoading(WebCore::DatabasePolicy DatabasePolicyContinue)  line 294 + 24 bytes WEBKIT!WebCore::FrameLoader::stopAllLoaders(WebCore::DatabasePolicy DatabasePolicyStop)  line 2234 WEBKIT!WebCore::FrameLoader::continueLoadAfterNavigationPolicy(const WebCore::ResourceRequest & {...}, WTF::PassRefPtr<WebCore::FormState> * 0x43c0d244, bool true)  line 3428 WEBKIT!WebCore::FrameLoader::callContinueLoadAfterNavigationPolicy(void * 0x004b1a50, const WebCore::ResourceRequest & {...}, WTF::PassRefPtr<WebCore::FormState> * 0x0011e3a4, bool true)  line 3382 WEBKIT!WebCore::PolicyCallback::call(bool true)  line 102 WEBKIT!WebCore::PolicyChecker::continueAfterNavigationPolicy(WebCore::PolicyAction 9463168)  line 161 WEBKIT!WebFrame::receivedPolicyDecision(WebCore::PolicyAction PolicyUse)  line 1535 WEBKIT!WebFramePolicyListener::receivedPolicyDecision(WebCore::PolicyAction PolicyUse)  line 129
WEBKIT!WebFramePolicyListener::use()  line 100 WEBKIT!DefaultPolicyDelegate::decidePolicyForNavigationAction(IWebView * 0x00000005, IPropertyBag * 0x00900003, IWebURLRequest * 0x00908c20, IWebFrame * 0x00000005, IWebPolicyDecisionListener * 0x00000000)  line 120 + 28 bytes WEBKIT!WebFrame::dispatchDecidePolicyForNavigationAction(void (WebCore::PolicyAction)* 0x00908c20, const WebCore::NavigationAction & {...}, const WebCore::ResourceRequest & {...}, WTF::PassRefPtr<WebCore::FormState> * 0x0089c7a0)  line 1584 + 168 bytes WEBKIT!WebCore::PolicyChecker::checkNavigationPolicy(const WebCore::ResourceRequest & {...}, WebCore::DocumentLoader * 0x0011e7df, WTF::PassRefPtr<WebCore::FormState> * 0x00000004, void (void *, const WebCore::ResourceRequest &, WTF::PassRefPtr<WebCore::FormState>, bool)* 0x00000007, void * 0x00000007)  line 89 WEBKIT!WebCore::FrameLoader::loadWithDocumentLoader(WebCore::DocumentLoader * 0x004b1a50, WebCore::FrameLoadType 5128704, WTF::PassRefPtr<WebCore::FormState> * 0x009076a8)  line 2018 WEBKIT!WebCore::FrameLoader::load(WebCore::DocumentLoader * 0x00907460)  line 1971 WEBKIT!WebCore::FrameLoader::load(const WebCore::ResourceRequest & {...}, const WebCore::SubstituteData & {...}, bool true)  line 1912 WEBKIT!WebCore::FrameLoader::load(const WebCore::ResourceRequest & {...}, bool false)  line 1898 + 40 bytes WEBKIT!WebFrame::loadRequest(IWebURLRequest * 0x009062c0)  line 504 
LAUNCHER!loadURL(wchar_t * 0x00906288)  line 491 + 32 bytes




More information about the webkit-dev mailing list