Closed
Bug 212820
Opened 21 years ago
Closed 21 years ago
XMLHttpRequest locks up browser when grabbing synchronously
Categories
(Core :: XML, defect)
Tracking
()
RESOLVED
DUPLICATE
of bug 190313
People
(Reporter: geofforama, Assigned: hjtoi-bugzilla)
References
()
Details
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4b) Gecko/20030630 Mozilla Firebird/0.6 StumbleUpon/1.66
Build Identifier: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4b) Gecko/20030630 Mozilla Firebird/0.6 StumbleUpon/1.66
When using XMLHttpRequest synchronously in javascript, the browser will freeze
until the request is finished. In this example:
http://www.stumbleupon.com/test.html
I get the xmlhttprequest to hit sleep.php, which is a PHP script that sleeps for
10 seconds. Hitting the above page will causes the browser to freeze for 10
seconds while waiting for the xmlhttprequest to finish retrieving the response
xml. CPU usage during the freeze is 100%.
The workaround is to use the async version of xmlhttprequest, but for anyone
hitting a page with a sync xmlhttprequest, their browser will lockup for as long
as network lag is. And of course, using the async version needlessly
complicates your code.
I'm not sure if this probems exists outside of javascript. I have seen it
happen on windows and linux, Mozilla 1.4 and early builds.
Reproducible: Always
Steps to Reproduce:
1.Go to http://www.stumbleupon.com/test.html
Actual Results:
Browser locks up for 10 seconds, CPU usage is 100%
Expected Results:
Browser should not lock up, nor should CPU usage be 100%.
Comment 1•21 years ago
|
||
I'm using the most recent FireFox 0.8 and tried the test page. Yes, the bug
exists. Actually I had a similar code in a webpage of mine. I'm using Windows XP
SP1. And even for localhost, it freezes for 3 or 4 seconds. The CPU usage
doesn't even let me switch tasks.
var xml=new XMLHttpRequest();
xml.open("GET",url,false);
xml.setRequestHeader('Cache-control','no-cache');
xml.send(null);
document.getElementById(lyr).innerHTML=xml.responseText;
Comment 2•21 years ago
|
||
Same here (Mozilla 1.6/WinXP) - all open Mozilla windows hang.
It seems that this code doesn't work correct and turns into an empty loop:
http://lxr.mozilla.org/mozilla/source/extensions/xmlextras/base/src/nsXMLHttpRequest.cpp#1336
1335 if (!(mState & XML_HTTP_REQUEST_ASYNC)) {
1336 while (mState & XML_HTTP_REQUEST_SYNCLOOPING) {
1337 modalEventQueue->ProcessPendingEvents();
1338 }
I think, ProcessPendingEvents() should be replaced by WaitForEvent() and
HandleEvent(), this will solve the issue with the CPU load. An event should be
posted to the event queue after deleting XML_HTTP_REQUEST_SYNCLOOPING flag - to
make sure that the loop really stops.
Preventing the browser from hanging while Send() executes will be much more
difficult to achieve...
This is a duplicate of bug 190313.
The preferred remediation is discussed in that bug and bug 189513 comment 2.
I intend to work on it, but I haven't found time recently. If anyone else
begins work on it, please let me know.
Assignee | ||
Comment 4•21 years ago
|
||
*** This bug has been marked as a duplicate of 190313 ***
Status: UNCONFIRMED → RESOLVED
Closed: 21 years ago
Resolution: --- → DUPLICATE
You need to log in
before you can comment on or make changes to this bug.
Description
•