diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog index 8b673466968d473223f270b33a4c9227c04cf93f..2023950d1c16c242ae3a3073e3010c58d108b02d 100644 --- a/Source/WebCore/ChangeLog +++ b/Source/WebCore/ChangeLog @@ -1,3 +1,22 @@ +2013-12-09 Andreas Kling + + REGRESSION(r160260): Memory pressure signal causes web process to hang. + + + Reviewed by Tim Horton. + + This command caused all of my web processes to hang: + + notifyutil -p org.WebKit.lowMemory + + This only happens when the cache pruning code encounters a resource + using purgeable memory. + + * loader/cache/MemoryCache.cpp: + (WebCore::MemoryCache::pruneLiveResourcesToSize): + + Grab the next CachedResource pointer before continuing the loop. + 2013-12-09 peavo@outlook.com [WinCairo] OpenGL compile error. diff --git a/Source/WebCore/loader/cache/MemoryCache.cpp b/Source/WebCore/loader/cache/MemoryCache.cpp index 5fab5103a9e71c54e7701117eff5efb62e7853a5..506f6414eb84e3af47294f1924e2d18e5f4864dd 100644 --- a/Source/WebCore/loader/cache/MemoryCache.cpp +++ b/Source/WebCore/loader/cache/MemoryCache.cpp @@ -266,8 +266,10 @@ void MemoryCache::pruneLiveResourcesToSize(unsigned targetSize) if (elapsedTime < cMinDelayBeforeLiveDecodedPrune) return; - if (current->decodedDataIsPurgeable()) + if (current->decodedDataIsPurgeable()) { + current = prev; continue; + } // Destroy our decoded data. This will remove us from // m_liveDecodedResources, and possibly move us to a different LRU