Bug 84517

Summary: ASSERT(revalidatingResource->inCache()) failure in MemoryCache::revalidationSucceeded()
Product: WebKit Reporter: Xianzhu Wang <wangxianzhu>
Component: Page LoadingAssignee: Nobody <webkit-unassigned>
Status: RESOLVED WORKSFORME    
Severity: Normal CC: abarth, ap, beidson, japhet, koivisto, martijn
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on:    
Bug Blocks: 66687    

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.