Summary: | Assertion failure when trying to restart a sync XMLHttpRequest as an async one from onreadystatechange | ||||||
---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Julien Chaffraix <jchaffraix> | ||||
Component: | XML | Assignee: | Nobody <webkit-unassigned> | ||||
Status: | RESOLVED DUPLICATE | ||||||
Severity: | Normal | CC: | ap | ||||
Priority: | P2 | ||||||
Version: | 528+ (Nightly build) | ||||||
Hardware: | All | ||||||
OS: | All | ||||||
Attachments: |
|
Description
Julien Chaffraix
2008-02-23 10:54:02 PST
Created attachment 19302 [details]
test case
Explanation :
the readystatechange listener is called from processSyncLoadResults line changeState(Sent).
When we call open in the previous listener, we first set m_aborted to true in internalAbort but later in open we set it to false.
As a consequence, when we come to processSyncLoadResults the previous XMLHttpRequest is not cancelled (m_aborted is false) and then triggers the assertion as m_loader != 0 (we have created an async XHR in the listener).
There are no assertions in XMLHttpRequest::didFinishLoading() now, but I'm getting an assertion failure in a different place: ASSERTION FAILED: !m_didTellLoaderAboutRequest (/Volumes/Data/Safari/OpenSource/WebCore/xml/XMLHttpRequest.cpp:571 void WebCore::XMLHttpRequest::createRequest(WebCore::ExceptionCode&)) |