CDT indexing problems: out of memory, waiting for exclusive lock and type hierarchy [message #1832026] |
Sun, 06 September 2020 09:42 |
Gennady Gozman Messages: 2 Registered: December 2018 |
Junior Member |
|
|
Hi,
Our C++ project has above 15000 source files 0.5-1 millions lines of code. Some of files cause out of memory exceptions when being indexed/parsed. These exceptions often are reported when Eclipse/CDT waits for an exclusive lock without any progress. Additionally these files has duplicate entries in the Type Hierarchy.
Currently Eclipse Xmx is of 4.5G. I've tried to increase it up to 30G without any success. It seems that the issue is kind of recursion or endless loop so that increasing Xmx does not/will not help.
The size of the project PDOM file can be more than 600-700M.
Unfortunately, it is not possible to find out what part of out code causes this event when turning on the CDT debugging. I'm trying for months (years?) to deal with this by refactoring our code (mostly by rearranging includes) without almost no success.
Typical jstack report of the problem contains following (an example file is attached):
Thread t@492: (state = IN_JAVA)
- org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPInheritance$FinalOverriderMap.mergeOverriders(java.util.List, java.util.List) @bci=108, line=104 (Compiled frame; information may be imprecise)
- org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPInheritance$FinalOverriderMap.addOverriders(org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPInheritance$FinalOverriderMap) @bci=134, line=93 (Compiled frame)
- org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPInheritance$FinalOverriderAnalysis.collectFinalOverriders(org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType, boolean, java.util.Set, int, org.eclipse.cdt.core.dom.ast.IASTNode) @bci=231, line=248 (Compiled frame)
- org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPInheritance$FinalOverriderAnalysis.collectFinalOverriders(org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType, boolean, java.util.Set, int, org.eclipse.cdt.core.dom.ast.IASTNode) @bci=222, line=244 (Compiled frame)
- org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPInheritance$FinalOverriderAnalysis.computeFinalOverriderMap(org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType, org.eclipse.cdt.core.dom.ast.IASTNode) @bci=19, line=177 (Compiled frame)
- org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPInheritance.getFinalOverriderMap(org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType, org.eclipse.cdt.core.dom.ast.IASTNode) @bci=54, line=138 (Compiled frame)
-
org.eclipse.cdt.core.dom.ast.cpp.SemanticQueries.getPureVirtualMethods(org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType, org.eclipse.cdt.core.dom.ast.IASTNode) @bci=2, line=96 (Interpreted frame)
We use Eclipse 4.6.3a/CDT 9.2.1 on Solaris and Eclipse 4.7.3a/CDT 9.4.3 on Linux. I think that the Eclipse/CDT version does not matter.
I need technical help with determining what pure virtual methods in what class causes this. Additionally, is there any utility for editing PDOM files? Is it possible to remove obsolete entries from it without rebuilding indexes?
Thanks in advance.
|
|
|
Powered by
FUDForum. Page generated in 0.03783 seconds