Closed Bug 659322 Opened 13 years ago Closed 12 years ago

Firefox freezes momentarily when resolving DNS

Categories

(Core :: Networking, defect)

2.0 Branch
x86
Windows 7
defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 769764

People

(Reporter: b827581, Unassigned)

References

()

Details

User-Agent:       Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Build Identifier: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1

Here at work we use a DNS script to redirect traffic based on destination IP to either a web proxy or to an internal destination.  In certain instances when resolving IP addresses, all instances of Firefox will freeze until the domain name has been resolved.  This has been a recurring problem with Firefox since at least FF3, and perhaps even earlier; it's only been now that I've been annoyed enough to fix this bug.  Below is our DNS script, though sanitized to remove sensitive information.  The X'ed out IP addresses are internal subnet ranges, and the triple XXX.XXX.XXX at the bottom are our three web proxy servers.

// JavaScript for web proxy auto discovery (WPAD)
// $Date: 2010/07/26 21:23:10 $ $Revision: 1.5 $
// Proxying follows routing and firewall rules

function FindProxyForURL(url, host) {
    if ( !isResolvable(host) ) return "DIRECT";
    var ip = dnsResolve(host);

    

    // LANL networks
    if (isInNet(ip, "XXX.XXX.0.0", "255.255.0.0"))    return "DIRECT";
    if (isInNet(ip, "XXX.XXX.0.0", "255.255.0.0"))    return "DIRECT";
    if (isInNet(ip, "XXX.XXX.0.0", "255.255.0.0"))    return "DIRECT";
    if (isInNet(ip, "XXX.XXX.0.0", "255.255.0.0"))   return "DIRECT";
    if (isInNet(ip, "XXX.XXX.XXX.0", "255.255.255.0"))   return "DIRECT";
    // Private (not routed to the Internet) networks
    if (isInNet(ip, "172.16.0.0", "255.240.0.0"))     return "DIRECT";
    if (isInNet(ip, "192.168.0.0", "255.255.0.0"))    return "DIRECT";
    if (isInNet(ip, "127.0.0.0",   "255.0.0.0"))      return "DIRECT";

    if (isPlainHostName(host))                        return "DIRECT";

    // Do not proxy ftp urls: non-anonymous ftp has issues
    if (url.substring(0, 4) == "ftp:")                return "DIRECT";

    // Off-site requests are proxied
    return "PROXY XXX.XXX.XXX:8080; PROXY XXX.XXX.XXX:8080; PROXY XXX.XXX.XXX:8080";

The problem is not with this script, since other web browsers do not have this behavior; I am providing it only in case it is needed to reproduce the problem.

Reproducible: Sometimes

Steps to Reproduce:
1. Open Firefox
2. Browse to any webpage (this happens fairly rarely, but almost always happens at NewEgg.com)
3. Watch as ALL of your Firefox browser windows freeze until this one page manages to resolve the address to some random image or other page element.

Actual Results:  
All of the Firefox browser windows freeze since the master process appears to be busy trying to resolve a name.

Expected Results:  
All page elements should be loaded and resolved asynchronously without impacting other aspects of the page, and certainly not other open browser windows or tabs.  I suspect the DNS resolver in Firefox is designed for normal environments where DNS resolution happens quickly, and in certain instances where this is not the case, it hangs.

This problem may not actually be DNS resolution, but it appears to be.  When a page is loading elements, it freezes in this fashion.  As these pages do not exhibit this behavior on the exact same browser, but in a different environment, I'm inclined to believe that the big difference in this situation is the DNS resolving.  It could also potentially be the web proxy used here, but this seems unlikely to me as the web proxy only delivers content it has already downloaded, and should not cause strange behavior on the client end.
Component: General → Networking
Product: Firefox → Core
QA Contact: general → networking
Version: unspecified → 2.0 Branch
Sounds like a duplicate of PAC running on the UI thread...
Whiteboard: DUPEME
Status: UNCONFIRMED → RESOLVED
Closed: 12 years ago
Resolution: --- → DUPLICATE
Whiteboard: DUPEME
You need to log in before you can comment on or make changes to this bug.