Bug 15183
Summary: | Reproducible assertion failure in XMLHttpRequest::didFinishLoading (loader == m_loader) | ||
---|---|---|---|
Product: | WebKit | Reporter: | mitz |
Component: | New Bugs | Assignee: | Nobody <webkit-unassigned> |
Status: | RESOLVED WORKSFORME | ||
Severity: | Normal | CC: | ap |
Priority: | P2 | Keywords: | InRadar, NeedsReduction |
Version: | 523.x (Safari 3) | ||
Hardware: | Mac | ||
OS: | OS X 10.4 | ||
URL: | http://www.noobo.co.il/Game.Aspx?gid=8 |
mitz
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*))
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
mitz
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
David Kilzer (:ddkilzer)
<rdar://problem/5476100>
David Kilzer (:ddkilzer)
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?
David Kilzer (:ddkilzer)
(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?
mitz
(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.