[Webkit-unassigned] [Bug 30989] Assert failure in http://wap.google.com/wml

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Sun Nov 1 03:20:23 PST 2009


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





--- Comment #1 from Nayan <nayankk at gmail.com>  2009-11-01 03:20:22 PDT ---
I did a initial analysis of the issue, and below are my findings.

1. Frameloader creates 'DocuementLoader' object when it receives the load
request for 'http://wap.google.com/wml' page.

Breakpoint 1, DocumentLoader (this=0x8372400, req=@0xbf9d82ec,
substituteData=@0xbf9d81e4) at ../../WebCore/loader/DocumentLoader.cpp:151
151        , m_applicationCacheHost(new ApplicationCacheHost(this))
Current language:  auto; currently c++
(gdb) bt
#0  DocumentLoader (this=0x8372400, req=@0xbf9d82ec,
substituteData=@0xbf9d81e4) at ../../WebCore/loader/DocumentLoader.cpp:151
#1  0xb65e4093 in DocumentLoader (this=0x8372400, request=@0xbf9d82ec,
substituteData=@0xbf9d81e4) at
../../WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.cpp:42
#2  0xb65f505c in WebKit::DocumentLoader::create (request=@0xbf9d82ec,
data=@0xbf9d81e4) at ../../WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.h:48
#3  0xb65f1180 in WebKit::FrameLoaderClient::createDocumentLoader
(this=0x8073300, request=@0xbf9d82ec, substituteData=@0xbf9d81e4) at
../../WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp:118
#4  0xb6b3b88f in WebCore::FrameLoader::load (this=0x8089c2c,
request=@0xbf9d82ec, substituteData=@0xbf9d81e4, lockHistory=false) at
../../WebCore/loader/FrameLoader.cpp:1931
#5  0xb6b3ba16 in WebCore::FrameLoader::load (this=0x8089c2c,
request=@0xbf9d82ec, lockHistory=false) at
../../WebCore/loader/FrameLoader.cpp:1921
#6  0xb6602001 in webkit_web_frame_load_uri (frame=0x809e9b0, uri=0x832b678
"http://wap.google.com/wml") at ../../WebKit/gtk/webkit/webkitwebframe.cpp:514
#7  0xb66111fa in webkit_web_view_load_uri (webView=0x80a1000, uri=0x832b678
"http://wap.google.com/wml") at ../../WebKit/gtk/webkit/webkitwebview.cpp:2973


2. Loader finishes loading of the network resource and sends it to WML parser
for parsing. Since, this WML page contains 'Refresh' tag, reload request is
sent to FrameLoader. Frameloader now creates one DocumentLoader object.

Breakpoint 1, DocumentLoader (this=0x8424760, req=@0xbf9d86a8,
substituteData=@0xbf9d85c4) at ../../WebCore/loader/DocumentLoader.cpp:151
151        , m_applicationCacheHost(new ApplicationCacheHost(this))
(gdb) bt
#0  DocumentLoader (this=0x8424760, req=@0xbf9d86a8,
substituteData=@0xbf9d85c4) at ../../WebCore/loader/DocumentLoader.cpp:151
#1  0xb65e4093 in DocumentLoader (this=0x8424760, request=@0xbf9d86a8,
substituteData=@0xbf9d85c4) at
../../WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.cpp:42
#2  0xb65f505c in WebKit::DocumentLoader::create (request=@0xbf9d86a8,
data=@0xbf9d85c4) at ../../WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.h:48
#3  0xb65f1180 in WebKit::FrameLoaderClient::createDocumentLoader
(this=0x8073300, request=@0xbf9d86a8, substituteData=@0xbf9d85c4) at
../../WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp:118
#4  0xb6b3b2a4 in WebCore::FrameLoader::reload (this=0x8089c2c,
endToEndReload=false) at ../../WebCore/loader/FrameLoader.cpp:2144
#5  0xb6e47cc5 in WebCore::WMLRefreshElement::executeTask (this=0x83ad0c8) at
../../WebCore/wml/WMLRefreshElement.cpp:70
#6  0xb6e42109 in WebCore::WMLIntrinsicEventHandler::triggerIntrinsicEvent
(this=0x83ad118, type=WebCore::WMLIntrinsicEventOnEnterForward) at
../../WebCore/wml/WMLIntrinsicEventHandler.cpp:51
#7  0xb6e39dd4 in WebCore::WMLCardElement::handleIntrinsicEventIfNeeded
(this=0x83a54c8) at ../../WebCore/wml/WMLCardElement.cpp:168
#8  0xb6e3b1d6 in WebCore::WMLDocument::finishedParsing (this=0x8405a18) at
../../WebCore/wml/WMLDocument.cpp:83
#9  0xb69a8d61 in WebCore::XMLTokenizer::end (this=0x8385378) at
../../WebCore/dom/XMLTokenizer.cpp:218
#10 0xb69a8d99 in WebCore::XMLTokenizer::finish (this=0x8385378) at
../../WebCore/dom/XMLTokenizer.cpp:226
#11 0xb691de83 in WebCore::Document::finishParsing (this=0x8405a18) at
../../WebCore/dom/Document.cpp:1878
#12 0xb6b3501e in WebCore::FrameLoader::endIfNotLoadingMainResource
(this=0x8089c2c) at ../../WebCore/loader/FrameLoader.cpp:949
#13 0xb6b35057 in WebCore::FrameLoader::end (this=0x8089c2c) at
../../WebCore/loader/FrameLoader.cpp:934
#14 0xb6b1bd42 in WebCore::DocumentLoader::finishedLoading (this=0x8372400) at
../../WebCore/loader/DocumentLoader.cpp:330
#15 0xb6b3161a in WebCore::FrameLoader::finishedLoading (this=0x8089c2c) at
../../WebCore/loader/FrameLoader.cpp:2697
#16 0xb6b4a52e in WebCore::MainResourceLoader::didFinishLoading
(this=0x8424108) at ../../WebCore/loader/MainResourceLoader.cpp:393
#17 0xb6b536a4 in WebCore::ResourceLoader::didFinishLoading (this=0x8424108) at
../../WebCore/loader/ResourceLoader.cpp:403
#18 0xb6fca74b in finishedCallback (session=0x809a000, msg=0x83bd218,
data=0x841de98) at
../../WebCore/platform/network/soup/ResourceHandleSoup.cpp:325
#19 0xb565bb81 in final_finished (req=0x83bd218, user_data=0x8111e90) at
soup-session-async.c:381
#20 0xb595a73f in IA__g_cclosure_marshal_VOID__VOID (closure=0x83bb638,
return_value=0x0, n_param_values=1, param_values=0x841da50,
invocation_hint=0xbf9d8c2c, marshal_data=0xb565bab0) at gmarshal.c:77


3. For some reason, one more DocumentLoader object gets created, in process of
executing 'Refresh' tag. Not really sure why 2 'DocumentLoader's gets created
here!

Breakpoint 1, DocumentLoader (this=0x8408f58, req=@0xbf9d7d08,
substituteData=@0xbf9d7c24) at ../../WebCore/loader/DocumentLoader.cpp:151
151        , m_applicationCacheHost(new ApplicationCacheHost(this))
(gdb) bt
#0  DocumentLoader (this=0x8408f58, req=@0xbf9d7d08,
substituteData=@0xbf9d7c24) at ../../WebCore/loader/DocumentLoader.cpp:151
#1  0xb65e4093 in DocumentLoader (this=0x8408f58, request=@0xbf9d7d08,
substituteData=@0xbf9d7c24) at
../../WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.cpp:42
#2  0xb65f505c in WebKit::DocumentLoader::create (request=@0xbf9d7d08,
data=@0xbf9d7c24) at ../../WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.h:48
#3  0xb65f1180 in WebKit::FrameLoaderClient::createDocumentLoader
(this=0x8073300, request=@0xbf9d7d08, substituteData=@0xbf9d7c24) at
../../WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp:118
#4  0xb6b3b2a4 in WebCore::FrameLoader::reload (this=0x8089c2c,
endToEndReload=false) at ../../WebCore/loader/FrameLoader.cpp:2144
#5  0xb6e47cc5 in WebCore::WMLRefreshElement::executeTask (this=0x83ad0c8) at
../../WebCore/wml/WMLRefreshElement.cpp:70
#6  0xb6e42109 in WebCore::WMLIntrinsicEventHandler::triggerIntrinsicEvent
(this=0x83ad118, type=WebCore::WMLIntrinsicEventOnEnterForward) at
../../WebCore/wml/WMLIntrinsicEventHandler.cpp:51
#7  0xb6e39dd4 in WebCore::WMLCardElement::handleIntrinsicEventIfNeeded
(this=0x83a54c8) at ../../WebCore/wml/WMLCardElement.cpp:168
#8  0xb6e3b1d6 in WebCore::WMLDocument::finishedParsing (this=0x8405a18) at
../../WebCore/wml/WMLDocument.cpp:83
#9  0xb69a8d61 in WebCore::XMLTokenizer::end (this=0x8385378) at
../../WebCore/dom/XMLTokenizer.cpp:218
#10 0xb69a8d99 in WebCore::XMLTokenizer::finish (this=0x8385378) at
../../WebCore/dom/XMLTokenizer.cpp:226
#11 0xb691de83 in WebCore::Document::finishParsing (this=0x8405a18) at
../../WebCore/dom/Document.cpp:1878
#12 0xb6b36a8a in WebCore::FrameLoader::stop (this=0x8089c2c) at
../../WebCore/loader/FrameLoader.cpp:573
#13 0xb6b36b26 in WebCore::FrameLoader::receivedMainResourceError
(this=0x8089c2c, error=@0xbf9d7fdc, isComplete=true) at
../../WebCore/loader/FrameLoader.cpp:3309
#14 0xb6b4aac2 in WebCore::MainResourceLoader::didCancel (this=0x8424108,
error=@0xbf9d7fdc) at ../../WebCore/loader/MainResourceLoader.cpp:101
#15 0xb6b53ea8 in WebCore::ResourceLoader::cancel (this=0x8424108,
error=@0xbf9d8020) at ../../WebCore/loader/ResourceLoader.cpp:350
#16 0xb6b53733 in WebCore::ResourceLoader::cancel (this=0x8424108) at
../../WebCore/loader/ResourceLoader.cpp:340
#17 0xb6b1c27a in WebCore::DocumentLoader::stopLoading (this=0x8372400,
databasePolicy=WebCore::DatabasePolicyStop) at
../../WebCore/loader/DocumentLoader.cpp:294
#18 0xb6b30d37 in WebCore::FrameLoader::stopAllLoaders (this=0x8089c2c,
databasePolicy=WebCore::DatabasePolicyStop) at
../../WebCore/loader/FrameLoader.cpp:2258
#19 0xb6b3ab1c in WebCore::FrameLoader::continueLoadAfterNavigationPolicy
(this=0x8089c2c, formState=@0xbf9d8158, shouldContinue=true) at
../../WebCore/loader/FrameLoader.cpp:3447
#20 0xb6b3ace2 in WebCore::FrameLoader::callContinueLoadAfterNavigationPolicy
(argument=0x8089c2c, request=@0xbf9d81e8, formState=@0xbf9d8198,
shouldContinue=true)
    at ../../WebCore/loader/FrameLoader.cpp:3404
#21 0xb6b4d7cf in WebCore::PolicyCallback::call (this=0xbf9d81e8,
shouldContinue=true) at ../../WebCore/loader/PolicyCallback.cpp:101
#22 0xb6b4e36f in WebCore::PolicyChecker::continueAfterNavigationPolicy
(this=0x8089c34, policy=WebCore::PolicyUse) at
../../WebCore/loader/PolicyChecker.cpp:160
#23 0xb6606f28 in webkit_web_policy_decision_use (decision=0x842e240) at
../../WebKit/gtk/webkit/webkitwebpolicydecision.cpp:89
#24 0xb65f03f7 in
WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction
(this=0x8073300, 
    policyFunction=0xb6b4e18e
<WebCore::PolicyChecker::continueAfterNavigationPolicy(WebCore::PolicyAction)>,
action=@0xbf9d8470, resourceRequest=@0x84249dc)
    at ../../WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp:420
#25 0xb6b4e8f1 in WebCore::PolicyChecker::checkNavigationPolicy
(this=0x8089c34, request=@0x84249dc, loader=0x8424760, formState=@0xbf9d8568, 
    function=0xb6b3ac90
<WebCore::FrameLoader::callContinueLoadAfterNavigationPolicy(void*,
WebCore::ResourceRequest const&, WTF::PassRefPtr<WebCore::FormState>, bool)>,
argument=0x8089c2c)
    at ../../WebCore/loader/PolicyChecker.cpp:88
#26 0xb6b3b12e in WebCore::FrameLoader::loadWithDocumentLoader (this=0x8089c2c,
loader=0x8424760, type=WebCore::FrameLoadTypeReload, prpFormState=@0xbf9d8698)
at ../../WebCore/loader/FrameLoader.cpp:2039
#27 0xb6b3b42d in WebCore::FrameLoader::reload (this=0x8089c2c,
endToEndReload=false) at ../../WebCore/loader/FrameLoader.cpp:2157
#28 0xb6e47cc5 in WebCore::WMLRefreshElement::executeTask (this=0x83ad0c8) at
../../WebCore/wml/WMLRefreshElement.cpp:70
#29 0xb6e42109 in WebCore::WMLIntrinsicEventHandler::triggerIntrinsicEvent
(this=0x83ad118, type=WebCore::WMLIntrinsicEventOnEnterForward) at
../../WebCore/wml/WMLIntrinsicEventHandler.cpp:51
#30 0xb6e39dd4 in WebCore::WMLCardElement::handleIntrinsicEventIfNeeded
(this=0x83a54c8) at ../../WebCore/wml/WMLCardElement.cpp:168
#31 0xb6e3b1d6 in WebCore::WMLDocument::finishedParsing (this=0x8405a18) at
../../WebCore/wml/WMLDocument.cpp:83
#32 0xb69a8d61 in WebCore::XMLTokenizer::end (this=0x8385378) at
../../WebCore/dom/XMLTokenizer.cpp:218
#33 0xb69a8d99 in WebCore::XMLTokenizer::finish (this=0x8385378) at
../../WebCore/dom/XMLTokenizer.cpp:226
#34 0xb691de83 in WebCore::Document::finishParsing (this=0x8405a18) at
../../WebCore/dom/Document.cpp:1878
#35 0xb6b3501e in WebCore::FrameLoader::endIfNotLoadingMainResource
(this=0x8089c2c) at ../../WebCore/loader/FrameLoader.cpp:949
#36 0xb6b35057 in WebCore::FrameLoader::end (this=0x8089c2c) at
../../WebCore/loader/FrameLoader.cpp:934
#37 0xb6b1bd42 in WebCore::DocumentLoader::finishedLoading (this=0x8372400) at
../../WebCore/loader/DocumentLoader.cpp:330
#38 0xb6b3161a in WebCore::FrameLoader::finishedLoading (this=0x8089c2c) at
../../WebCore/loader/FrameLoader.cpp:2697
#39 0xb6b4a52e in WebCore::MainResourceLoader::didFinishLoading
(this=0x8424108) at ../../WebCore/loader/MainResourceLoader.cpp:393
#40 0xb6b536a4 in WebCore::ResourceLoader::didFinishLoading (this=0x8424108) at
../../WebCore/loader/ResourceLoader.cpp:403
#41 0xb6fca74b in finishedCallback (session=0x809a000, msg=0x83bd218,
data=0x841de98) at
../../WebCore/platform/network/soup/ResourceHandleSoup.cpp:325
#42 0xb565bb81 in final_finished (req=0x83bd218, user_data=0x8111e90) at
soup-session-async.c:381
#43 0xb595a73f in IA__g_cclosure_marshal_VOID__VOID (closure=0x83bb638,
return_value=0x0, n_param_values=1, param_values=0x841da50,
invocation_hint=0xbf9d8c2c, marshal_data=0xb565b


4. And then 'updateLoading' gets called.

Breakpoint 3, WebCore::DocumentLoader::updateLoading (this=0x8372400) at
../../WebCore/loader/DocumentLoader.cpp:389
389        if (!m_frame) {
(gdb) bt
#0  WebCore::DocumentLoader::updateLoading (this=0x8372400) at
../../WebCore/loader/DocumentLoader.cpp:389
#1  0xb6b1b94f in WebCore::DocumentLoader::removeSubresourceLoader
(this=0x8372400, loader=0x8373428) at
../../WebCore/loader/DocumentLoader.cpp:743
#2  0xb6b56208 in WebCore::SubresourceLoader::didCancel (this=0x8373428,
error=@0xbf9d7f4c) at ../../WebCore/loader/SubresourceLoader.cpp:233
#3  0xb6b53ea8 in WebCore::ResourceLoader::cancel (this=0x8373428,
error=@0xbf9d7f90) at ../../WebCore/loader/ResourceLoader.cpp:350
#4  0xb6b53733 in WebCore::ResourceLoader::cancel (this=0x8373428) at
../../WebCore/loader/ResourceLoader.cpp:340
#5  0xb6b1bdfa in cancelAll (loaders=@0x8372414) at
../../WebCore/loader/DocumentLoader.cpp:123
#6  0xb6b1be66 in WebCore::DocumentLoader::stopLoadingSubresources
(this=0x8372400) at ../../WebCore/loader/DocumentLoader.cpp:731
#7  0xb6b1c325 in WebCore::DocumentLoader::stopLoading (this=0x8372400,
databasePolicy=WebCore::DatabasePolicyStop) at
../../WebCore/loader/DocumentLoader.cpp:304
#8  0xb6b30d37 in WebCore::FrameLoader::stopAllLoaders (this=0x8089c2c,
databasePolicy=WebCore::DatabasePolicyStop) at
../../WebCore/loader/FrameLoader.cpp:2258
#9  0xb6b3ab1c in WebCore::FrameLoader::continueLoadAfterNavigationPolicy
(this=0x8089c2c, formState=@0xbf9d8158, shouldContinue=true) at
../../WebCore/loader/FrameLoader.cpp:3447
#10 0xb6b3ace2 in WebCore::FrameLoader::callContinueLoadAfterNavigationPolicy
(argument=0x8089c2c, request=@0xbf9d81e8, formState=@0xbf9d8198,
shouldContinue=true)
    at ../../WebCore/loader/FrameLoader.cpp:3404
#11 0xb6b4d7cf in WebCore::PolicyCallback::call (this=0xbf9d81e8,
shouldContinue=true) at ../../WebCore/loader/PolicyCallback.cpp:101
#12 0xb6b4e36f in WebCore::PolicyChecker::continueAfterNavigationPolicy
(this=0x8089c34, policy=WebCore::PolicyUse) at
../../WebCore/loader/PolicyChecker.cpp:160
#13 0xb6606f28 in webkit_web_policy_decision_use (decision=0x842e240) at
../../WebKit/gtk/webkit/webkitwebpolicydecision.cpp:89
#14 0xb65f03f7 in
WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction
(this=0x8073300, 
    policyFunction=0xb6b4e18e
<WebCore::PolicyChecker::continueAfterNavigationPolicy(WebCore::PolicyAction)>,
action=@0xbf9d8470, resourceRequest=@0x84249dc)
    at ../../WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp:420
#15 0xb6b4e8f1 in WebCore::PolicyChecker::checkNavigationPolicy
(this=0x8089c34, request=@0x84249dc, loader=0x8424760, formState=@0xbf9d8568, 
    function=0xb6b3ac90
<WebCore::FrameLoader::callContinueLoadAfterNavigationPolicy(void*,
WebCore::ResourceRequest const&, WTF::PassRefPtr<WebCore::FormState>, bool)>,
argument=0x8089c2c)
    at ../../WebCore/loader/PolicyChecker.cpp:88
#16 0xb6b3b12e in WebCore::FrameLoader::loadWithDocumentLoader (this=0x8089c2c,
loader=0x8424760, type=WebCore::FrameLoadTypeReload, prpFormState=@0xbf9d8698)
at ../../WebCore/loader/FrameLoader.cpp:2039
#17 0xb6b3b42d in WebCore::FrameLoader::reload (this=0x8089c2c,
endToEndReload=false) at ../../WebCore/loader/FrameLoader.cpp:2157
#18 0xb6e47cc5 in WebCore::WMLRefreshElement::executeTask (this=0x83ad0c8) at
../../WebCore/wml/WMLRefreshElement.cpp:70
#19 0xb6e42109 in WebCore::WMLIntrinsicEventHandler::triggerIntrinsicEvent
(this=0x83ad118, type=WebCore::WMLIntrinsicEventOnEnterForward) at
../../WebCore/wml/WMLIntrinsicEventHandler.cpp:51
#20 0xb6e39dd4 in WebCore::WMLCardElement::handleIntrinsicEventIfNeeded
(this=0x83a54c8) at ../../WebCore/wml/WMLCardElement.cpp:168
#21 0xb6e3b1d6 in WebCore::WMLDocument::finishedParsing (this=0x8405a18) at
../../WebCore/wml/WMLDocument.cpp:83
#22 0xb69a8d61 in WebCore::XMLTokenizer::end (this=0x8385378) at
../../WebCore/dom/XMLTokenizer.cpp:218
#23 0xb69a8d99 in WebCore::XMLTokenizer::finish (this=0x8385378) at
../../WebCore/dom/XMLTokenizer.cpp:226
#24 0xb691de83 in WebCore::Document::finishParsing (this=0x8405a18) at
../../WebCore/dom/Document.cpp:1878
#25 0xb6b3501e in WebCore::FrameLoader::endIfNotLoadingMainResource
(this=0x8089c2c) at ../../WebCore/loader/FrameLoader.cpp:949
#26 0xb6b35057 in WebCore::FrameLoader::end (this=0x8089c2c) at
../../WebCore/loader/FrameLoader.cpp:934
#27 0xb6b1bd42 in WebCore::DocumentLoader::finishedLoading (this=0x8372400) at
../../WebCore/loader/DocumentLoader.cpp:330
#28 0xb6b3161a in WebCore::FrameLoader::finishedLoading (this=0x8089c2c) at
../../WebCore/loader/FrameLoader.cpp:2697
#29 0xb6b4a52e in WebCore::MainResourceLoader::didFinishLoading
(this=0x8424108) at ../../WebCore/loader/MainResourceLoader.cpp:393
#30 0xb6b536a4 in WebCore::ResourceLoader::didFinishLoading (this=0x8424108) at
../../WebCore/loader/ResourceLoader.cpp:403
#31 0xb6fca74b in finishedCallback (session=0x809a000, msg=0x83bd218,
data=0x841de98) at
../../WebCore/platform/network/soup/ResourceHandleSoup.cpp:325
#32 0xb565bb81 in final_finished (req=0x83bd218, user_data=0x8111e90) at
soup-session-async.c:381


5. Assert in 'updateLoading' causes failure.

(gdb) n
393        ASSERT(this == frameLoader()->activeDocumentLoader());
(gdb) print frameLoader()->activeDocumentLoader()
$1 = (class WebCore::DocumentLoader *) 0x8408f58
(gdb) n
ASSERTION FAILED: this == frameLoader()->activeDocumentLoader()
(../../WebCore/loader/DocumentLoader.cpp:393 void
WebCore::DocumentLoader::updateLoading())

Note that, updateLoading gets called for the first DocumentLoader (0x8372400).
But, frameLoader()->activeDocumentLoader returns 3rd DocumentLoader, hence
causing the assert fail.

-- 
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