[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