[Webkit-unassigned] [Bug 100791] New: ResourceLoader can start itself in cancel()

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Oct 30 15:02:47 PDT 2012


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

           Summary: ResourceLoader can start itself in cancel()
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: Unspecified
        OS/Version: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: Page Loading
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: yoli at rim.com


I've seen ResourceLoader starting itself in when cancelling.

The sequence is like:

DocumentLoader::stopLoading() cancels a ResourceLoader for a subresource which hasn't been started yet.
ResourceLoader::cancel() calls releaseResources() which is a virtual function
SubresourceLoader::releaseResources() triggers CachedResourceLoader::loadDone()
CachedResourceLoader::loadDone() triggers ResourceLoadScheduler::servePendingRequests() which starts the same job
ResourceLoader::start() is called..
...
SubresourceLoader::releaseResources() calls ResourceLoader::releaseResources() at the end
ResourceLoader::releaseResources() removes itself from ResourceLoadScheduler's list, however, it is too late!
ResourceLoader::releaseResources() clears ResourceHandle's client but it doesn't cancel the job. So the real networking job could still be performed, depending on the implementation.


Initial thought, move "resourceLoadScheduler()->remove(this)" out of releaseResources(), so make sure it is called before SubresourceLoader triggering "servePendingRequests"

-- 
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