From 3fbe0d12af6ebf1a570defb83b105ba8d53ce59b Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Thu, 5 Dec 2013 20:34:57 -0800 Subject: [PATCH] Bug 400073 - Indexer runs out of memory. Fixed a soft memory leak caused by accumulation of data in PDOM.fResultCache when several consecutive files fail to parse. --- .../cdt/internal/core/pdom/AbstractIndexerTask.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/AbstractIndexerTask.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/AbstractIndexerTask.java index b44872ece24..a7c6d08cb98 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/AbstractIndexerTask.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/AbstractIndexerTask.java @@ -1055,6 +1055,14 @@ public abstract class AbstractIndexerTask extends PDOMWriter { } if (th != null) { swallowError(path, th); + // In case of a parsing error the result cache may not have been cleared. + // Clear if under a write lock to reduce interference with index readers. + fIndex.acquireWriteLock(); + try { + fIndex.clearResultCache(); + } finally { + fIndex.releaseWriteLock(); + } } return null; }