Bug 84517 - ASSERT(revalidatingResource->inCache()) failure in MemoryCache::revalidationSucceeded()
Summary: ASSERT(revalidatingResource->inCache()) failure in MemoryCache::revalidationS...
Status: RESOLVED WORKSFORME
Alias: None
Product: WebKit
Classification: Unclassified
Component: Page Loading (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks: 66687
  Show dependency treegraph
 
Reported: 2012-04-20 17:34 PDT by Xianzhu Wang
Modified: 2012-10-17 13:00 PDT (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Xianzhu Wang 2012-04-20 17:34:51 PDT
Encountered this on chromium-android by repeatedly openning new tabs, closing tabs, reloading tabs, switching between tabs, etc.

The reason seems:
MemoryCache::clear() might be called on low memory condition during a resource revalidation, causing the resources to be evicted, then some ASSERTs in MemoryCache::revalidationSucceeded() may fail:

ASSERT(revalidatingResource->inCache());
ASSERT(!m_resources.get(resource->url()));  // There might be another revalidating or revalidated resource after the original revalidation is evicted.
Comment 1 Adam Barth 2012-05-09 17:32:03 PDT
So, the ASSERT is wrong and should be removed?
Comment 2 Xianzhu Wang 2012-05-09 17:41:34 PDT
I think the ASSERTs are useful in most cases. Perhaps we need some logic to handle the low memory eviction case, e.g. to prevent revalidating resources from being evicted.
Comment 3 Adam Barth 2012-10-17 13:00:05 PDT
This appears to have been resolved in some other way.