[Webkit-unassigned] [Bug 41630] New: DNS prefetching spams resolver, shoots self in the foot

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Jul 5 13:22:06 PDT 2010


https://bugs.webkit.org/show_bug.cgi?id=41630

           Summary: DNS prefetching spams resolver, shoots self in the
                    foot
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: PC
        OS/Version: Mac OS X 10.5
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: WebKit Gtk
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: danw at gnome.org


I'm filing this against WebKitGtk to be conservative, but maybe it's a more general problem.

There is a problem in epiphany where sometimes you click on a link and it claims there's no such host, even when that's obviously untrue, and in fact, clicking reload will load the page successfully at this point.

The bug seems to go like this:

    1. User loads a page with a billion links
    2. WebKit calls prefetchDNS a billion times
    3. In the Gtk version at least, this results in a billion
       getaddrinfo() calls
    4. The upstream DNS server starts sending back DNS responses,
       but does so slowly. Probably because it's a wi-fi hub
       powered by a relatively slow processor and it's processing
       the requests more-or-less in serial rather than in parallel.
    5. User clicks a link partway down the page. Meanwhile, the wi-fi
       hub continues slowly sending back DNS responses.
    6. WebKitGtk/libsoup sees that there's an outstanding DNS request
       for the host in the clicked-on link, and waits for it to
       complete. Meanwhile, the wi-fi hub continues slowly sending back
       DNS responses.
    7. After 5 seconds, glibc times out all of the DNS requests that
       are still outstanding.
    8. WebKitGtk/libsoup get the DNS error and show it to the user.

network/cf/DNSCFNet.cpp seems to have some spam-preventing code. Perhaps that should be happening at a higher level.

Alternatively, maybe we don't need to prefetchDNS on every single link on the page at page load time. For Gtk at least, we're going to want to distinguish page-load prefetching from on-hover prefetching anyway, because we want to do proxy URI prefetching on hover, but not on page load (qv https://bugzilla.gnome.org/show_bug.cgi?id=605065)

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list