Bug 15183 - Reproducible assertion failure in XMLHttpRequest::didFinishLoading (loader == m_loader)
Summary: Reproducible assertion failure in XMLHttpRequest::didFinishLoading (loader ==...
Status: RESOLVED WORKSFORME
Alias: None
Product: WebKit
Classification: Unclassified
Component: New Bugs (show other bugs)
Version: 523.x (Safari 3)
Hardware: Macintosh OS X 10.4
: P2 Normal
Assignee: Nobody
URL: http://www.noobo.co.il/Game.Aspx?gid=8
Keywords: InRadar, NeedsReduction
Depends on:
Blocks:
 
Reported: 2007-09-11 13:25 PDT by mitz
Modified: 2007-09-13 04:03 PDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description mitz 2007-09-11 13:25:21 PDT
To reproduce:
Open the URL and when it finishes loading, close the browser window.

Result:
ASSERTION FAILED: loader == m_loader
(WebCore/xml/XMLHttpRequest.cpp:646 virtual void WebCore::XMLHttpRequest::didFinishLoading(WebCore::SubresourceLoader*))
Comment 1 mitz 2007-09-11 13:27:23 PDT
Backtrace:

0   com.apple.WebCore             	0x021143a8 WebCore::XMLHttpRequest::didFinishLoading(WebCore::SubresourceLoader*) + 132 (XMLHttpRequest.cpp:646)
1   com.apple.WebCore             	0x02111fa0 WebCore::XMLHttpRequest::didFail(WebCore::SubresourceLoader*, WebCore::ResourceError const&) + 64 (XMLHttpRequest.cpp:638)
2   com.apple.WebCore             	0x01ff9708 WebCore::SubresourceLoader::didFail(WebCore::ResourceError const&) + 208 (SubresourceLoader.cpp:213)
3   com.apple.WebCore             	0x01ff8668 WebCore::ResourceLoader::load(WebCore::ResourceRequest const&) + 496 (ResourceLoader.cpp:115)
4   com.apple.WebCore             	0x01ff9af8 WebCore::SubresourceLoader::load(WebCore::ResourceRequest const&) + 152 (SubresourceLoader.cpp:82)
5   com.apple.WebCore             	0x01ff9e8c WebCore::SubresourceLoader::create(WebCore::Frame*, WebCore::SubresourceLoaderClient*, WebCore::ResourceRequest const&, bool, bool, bool) + 884 (SubresourceLoader.cpp:122)
6   com.apple.WebCore             	0x021150dc WebCore::XMLHttpRequest::send(WebCore::String const&, int&) + 2040 (XMLHttpRequest.cpp:461)
7   com.apple.WebCore             	0x01d18108 KJS::JSXMLHttpRequestPrototypeFunction::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 2036 (JSXMLHttpRequest.cpp:275)
8   com.apple.JavaScriptCore      	0x004e5d84 KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 284
9   com.apple.JavaScriptCore      	0x005060bc KJS::FunctionCallDotNode::evaluate(KJS::ExecState*) + 988
10  com.apple.JavaScriptCore      	0x004f1b4c KJS::ExprStatementNode::execute(KJS::ExecState*) + 216
11  com.apple.JavaScriptCore      	0x004ee274 KJS::SourceElementsNode::execute(KJS::ExecState*) + 620
12  com.apple.JavaScriptCore      	0x004f1d70 KJS::BlockNode::execute(KJS::ExecState*) + 212
13  com.apple.JavaScriptCore      	0x004f2948 KJS::DeclaredFunctionImp::execute(KJS::ExecState*) + 88
14  com.apple.JavaScriptCore      	0x004f336c KJS::FunctionImp::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 684
15  com.apple.JavaScriptCore      	0x004e5d84 KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 284
16  com.apple.JavaScriptCore      	0x005060bc KJS::FunctionCallDotNode::evaluate(KJS::ExecState*) + 988
17  com.apple.JavaScriptCore      	0x004f1b4c KJS::ExprStatementNode::execute(KJS::ExecState*) + 216
18  com.apple.JavaScriptCore      	0x004ee120 KJS::SourceElementsNode::execute(KJS::ExecState*) + 280
19  com.apple.JavaScriptCore      	0x004f1d70 KJS::BlockNode::execute(KJS::ExecState*) + 212
20  com.apple.JavaScriptCore      	0x004f19d4 KJS::IfNode::execute(KJS::ExecState*) + 500
21  com.apple.JavaScriptCore      	0x004ee274 KJS::SourceElementsNode::execute(KJS::ExecState*) + 620
22  com.apple.JavaScriptCore      	0x004f1d70 KJS::BlockNode::execute(KJS::ExecState*) + 212
23  com.apple.JavaScriptCore      	0x004f2948 KJS::DeclaredFunctionImp::execute(KJS::ExecState*) + 88
24  com.apple.JavaScriptCore      	0x004f336c KJS::FunctionImp::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 684
25  com.apple.JavaScriptCore      	0x004e5d84 KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 284
26  com.apple.JavaScriptCore      	0x005060bc KJS::FunctionCallDotNode::evaluate(KJS::ExecState*) + 988
27  com.apple.JavaScriptCore      	0x004f1b4c KJS::ExprStatementNode::execute(KJS::ExecState*) + 216
28  com.apple.JavaScriptCore      	0x004ee274 KJS::SourceElementsNode::execute(KJS::ExecState*) + 620
29  com.apple.JavaScriptCore      	0x004f1d70 KJS::BlockNode::execute(KJS::ExecState*) + 212
30  com.apple.JavaScriptCore      	0x004f2948 KJS::DeclaredFunctionImp::execute(KJS::ExecState*) + 88
31  com.apple.JavaScriptCore      	0x004f336c KJS::FunctionImp::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 684
32  com.apple.JavaScriptCore      	0x004e5d84 KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 284
33  com.apple.JavaScriptCore      	0x005060bc KJS::FunctionCallDotNode::evaluate(KJS::ExecState*) + 988
34  com.apple.JavaScriptCore      	0x004f1b4c KJS::ExprStatementNode::execute(KJS::ExecState*) + 216
35  com.apple.JavaScriptCore      	0x004ee274 KJS::SourceElementsNode::execute(KJS::ExecState*) + 620
36  com.apple.JavaScriptCore      	0x004f1d70 KJS::BlockNode::execute(KJS::ExecState*) + 212
37  com.apple.JavaScriptCore      	0x004f2948 KJS::DeclaredFunctionImp::execute(KJS::ExecState*) + 88
38  com.apple.JavaScriptCore      	0x004f336c KJS::FunctionImp::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 684
39  com.apple.JavaScriptCore      	0x004e5d84 KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 284
40  com.apple.JavaScriptCore      	0x005060bc KJS::FunctionCallDotNode::evaluate(KJS::ExecState*) + 988
41  com.apple.JavaScriptCore      	0x004f218c KJS::ReturnNode::execute(KJS::ExecState*) + 380
42  com.apple.JavaScriptCore      	0x004ee274 KJS::SourceElementsNode::execute(KJS::ExecState*) + 620
43  com.apple.JavaScriptCore      	0x004f1d70 KJS::BlockNode::execute(KJS::ExecState*) + 212
44  com.apple.JavaScriptCore      	0x004f2948 KJS::DeclaredFunctionImp::execute(KJS::ExecState*) + 88
45  com.apple.JavaScriptCore      	0x004f336c KJS::FunctionImp::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 684
46  com.apple.JavaScriptCore      	0x004e5d84 KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 284
47  com.apple.JavaScriptCore      	0x005060bc KJS::FunctionCallDotNode::evaluate(KJS::ExecState*) + 988
48  com.apple.JavaScriptCore      	0x004f218c KJS::ReturnNode::execute(KJS::ExecState*) + 380
49  com.apple.JavaScriptCore      	0x004ee120 KJS::SourceElementsNode::execute(KJS::ExecState*) + 280
50  com.apple.JavaScriptCore      	0x004f1d70 KJS::BlockNode::execute(KJS::ExecState*) + 212
51  com.apple.JavaScriptCore      	0x004f2948 KJS::DeclaredFunctionImp::execute(KJS::ExecState*) + 88
52  com.apple.JavaScriptCore      	0x004f336c KJS::FunctionImp::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 684
53  com.apple.JavaScriptCore      	0x004e5d84 KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 284
54  com.apple.JavaScriptCore      	0x005060bc KJS::FunctionCallDotNode::evaluate(KJS::ExecState*) + 988
55  com.apple.JavaScriptCore      	0x004f1b4c KJS::ExprStatementNode::execute(KJS::ExecState*) + 216
56  com.apple.JavaScriptCore      	0x004ee120 KJS::SourceElementsNode::execute(KJS::ExecState*) + 280
57  com.apple.JavaScriptCore      	0x004f1d70 KJS::BlockNode::execute(KJS::ExecState*) + 212
58  com.apple.JavaScriptCore      	0x004f2948 KJS::DeclaredFunctionImp::execute(KJS::ExecState*) + 88
59  com.apple.JavaScriptCore      	0x004f336c KJS::FunctionImp::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 684
60  com.apple.JavaScriptCore      	0x004e5d84 KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 284
61  com.apple.JavaScriptCore      	0x005060bc KJS::FunctionCallDotNode::evaluate(KJS::ExecState*) + 988
62  com.apple.JavaScriptCore      	0x004f1b4c KJS::ExprStatementNode::execute(KJS::ExecState*) + 216
63  com.apple.JavaScriptCore      	0x004ee274 KJS::SourceElementsNode::execute(KJS::ExecState*) + 620
64  com.apple.JavaScriptCore      	0x004f1d70 KJS::BlockNode::execute(KJS::ExecState*) + 212
65  com.apple.JavaScriptCore      	0x004ee4bc KJS::TryNode::execute(KJS::ExecState*) + 224
66  com.apple.JavaScriptCore      	0x004ee120 KJS::SourceElementsNode::execute(KJS::ExecState*) + 280
67  com.apple.JavaScriptCore      	0x004f1d70 KJS::BlockNode::execute(KJS::ExecState*) + 212
68  com.apple.JavaScriptCore      	0x004f2948 KJS::DeclaredFunctionImp::execute(KJS::ExecState*) + 88
69  com.apple.JavaScriptCore      	0x004f336c KJS::FunctionImp::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 684
70  com.apple.JavaScriptCore      	0x004e5d84 KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 284
71  com.apple.JavaScriptCore      	0x00506ff0 KJS::FunctionCallResolveNode::evaluate(KJS::ExecState*) + 788
72  com.apple.JavaScriptCore      	0x004f1b4c KJS::ExprStatementNode::execute(KJS::ExecState*) + 216
73  com.apple.JavaScriptCore      	0x004ee120 KJS::SourceElementsNode::execute(KJS::ExecState*) + 280
74  com.apple.JavaScriptCore      	0x004f1d70 KJS::BlockNode::execute(KJS::ExecState*) + 212
75  com.apple.JavaScriptCore      	0x004f2948 KJS::DeclaredFunctionImp::execute(KJS::ExecState*) + 88
76  com.apple.JavaScriptCore      	0x004f336c KJS::FunctionImp::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 684
77  com.apple.JavaScriptCore      	0x004e5d84 KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&) + 284
78  com.apple.WebCore             	0x01d25e04 WebCore::JSAbstractEventListener::handleEvent(WebCore::Event*, bool) + 756 (kjs_events.cpp:116)
79  com.apple.WebCore             	0x01ab8aa4 WebCore::Document::handleWindowEvent(WebCore::Event*, bool) + 412 (Document.cpp:2376)
80  com.apple.WebCore             	0x01cc2a90 WebCore::EventTargetNode::dispatchWindowEvent(WebCore::AtomicString const&, bool, bool) + 364 (EventTargetNode.cpp:337)
81  com.apple.WebCore             	0x01fe48c4 WebCore::FrameLoader::stopLoading(bool) + 416 (FrameLoader.cpp:579)
82  com.apple.WebCore             	0x01fe4cf8 WebCore::FrameLoader::closeURL() + 40 (FrameLoader.cpp:645)
83  com.apple.WebCore             	0x01fe4d70 WebCore::FrameLoader::detachFromParent() + 60 (FrameLoader.cpp:3118)
84  com.apple.WebKit              	0x00225434 -[WebView(WebPrivate) _close] + 520

Comment 2 David Kilzer (:ddkilzer) 2007-09-11 20:59:58 PDT
<rdar://problem/5476100>
Comment 3 David Kilzer (:ddkilzer) 2007-09-12 13:35:39 PDT
I can't get this to reproduce with a debug build of r25517 with Safari 3 Public Beta v. 3.0.3 (522.12.1) on Mac OS X 10.4.10 (8R218).

I did notice that there are number of URL "flashes" that show up if the status bar is enabled on Safari.  When do I know if the page is loading?  Or do I have to close it at just the right time?

Comment 4 David Kilzer (:ddkilzer) 2007-09-12 21:03:45 PDT
(In reply to comment #3)
> I did notice that there are number of URL "flashes" that show up if the status
> bar is enabled on Safari.  When do I know if the page is loading?  Or do I have
> to close it at just the right time?

When do I know if the page is *done* loading?
Comment 5 mitz 2007-09-13 04:03:22 PDT
(In reply to comment #4)
> When do I know if the page is *done* loading?

By "done loading" I meant when the progress bar in the URL field is gone and the progress indicator in the tab disappears.

I am unable to reproduce the bug today. The backtrace makes it seem like it happened when an unload handler sent an XMLHttpRequest, but even when the bug happened I could not follow the JS code that did this.