Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-dev] Problems with indexing/searching

I've updated to the latest versions of the CDT and I'm still having trouble with the indexer.

Here's some environmental data:
Running on CentOs (Linux variant)

Eclipse version 3.2.1
CDT version 3.1.1.2006092708

My project is big, but not massive (roughly 250,000 lines of C++ code).

First, I just couldn't seem to get it to index my code properly at all. The indexer would run for less than a minute and emit no messages, so I thought things were just fine.

Then I would try to do a navigate to a type (Navigate->Open Type) and I'd start typing in the name of *any* of the classes defined in my code and none of them are present. The only things present seemed to be coming from some of my system includes, but nothing from my code base. I tweaked a lot of settings and then told the indexer to run and off it went (and has been going for more than an hour now).

I looked in the eclipse .log file and I'm seeing several StackOverflowError messages being emitted, so something is definitely off with the indexer. Here's a portion of one of the stack traces:

java.lang.StackOverflowError
org.eclipse.cdt.internal.core.pdom.db.ShortString.compare(ShortString.java:202)
org.eclipse.cdt.internal.core.pdom.dom.PDOMNamedNode$NodeFinder.compare(PDOMNamedNode.java:85)
org.eclipse.cdt.internal.core.pdom.db.BTree.accept(BTree.java:226)
org.eclipse.cdt.internal.core.pdom.db.BTree.accept(BTree.java:229)
org.eclipse.cdt.internal.core.pdom.db.BTree.accept(BTree.java:229)
org.eclipse.cdt.internal.core.pdom.db.BTree.accept(BTree.java:195)
org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkage.adaptBinding(PDOMCPPLinkage.java:292)
org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkage.resolveBinding(PDOMCPPLinkage.java:316)
org.eclipse.cdt.internal.core.pdom.PDOM.resolveBinding(PDOM.java:248)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPScope.getBinding(CPPScope.java:134)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPSemantics.lookup(CPPSemantics.java:1019)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPSemantics.resolveBinding(CPPSemantics.java:613)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.createBinding(CPPVisitor.java:164)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName.resolveBinding(CPPASTName.java:52)
org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPNamespace.getBinding(PDOMCPPNamespace.java:146)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPScope.getBinding(CPPScope.java:136)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.createBinding(CPPVisitor.java:350)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.createBinding(CPPVisitor.java:191)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName.resolveBinding(CPPASTName.java:52)
org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPNamespace.getBinding(PDOMCPPNamespace.java:146)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPScope.getBinding(CPPScope.java:136)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.createBinding(CPPVisitor.java:350)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.createBinding(CPPVisitor.java:191)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName.resolveBinding(CPPASTName.java:52)
org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPNamespace.getBinding(PDOMCPPNamespace.java:146)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPScope.getBinding(CPPScope.java:136)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.createBinding(CPPVisitor.java:350)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.createBinding(CPPVisitor.java:191)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName.resolveBinding(CPPASTName.java:52)
...


There are two basic forms of stack overflow that have been occuring, here's a sample of the other:

java.lang.StackOverflowError
org.eclipse.cdt.internal.core.dom.parser.ASTNode.getTranslationUnit(ASTNode.java:108)
org.eclipse.cdt.internal.core.dom.parser.ASTNode.getTranslationUnit(ASTNode.java:108)
org.eclipse.cdt.internal.core.dom.parser.ASTNode.getTranslationUnit(ASTNode.java:108)
org.eclipse.cdt.internal.core.dom.parser.ASTNode.getTranslationUnit(ASTNode.java:108)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPScope.getBinding(CPPScope.java:128)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPClassScope.getBinding(CPPClassScope.java:238)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPSemantics.lookup(CPPSemantics.java:1019)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPSemantics.postResolution(CPPSemantics.java:665)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPSemantics.resolveBinding(CPPSemantics.java:629)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.createBinding(CPPVisitor.java:297)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.createBinding(CPPVisitor.java:191)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName.resolveBinding(CPPASTName.java:52)
org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPNamespace.getBinding(PDOMCPPNamespace.java:146)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.createBinding(CPPVisitor.java:350)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.createBinding(CPPVisitor.java:191)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName.resolveBinding(CPPASTName.java:52)
org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPNamespace.getBinding(PDOMCPPNamespace.java:146)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.createBinding(CPPVisitor.java:350)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.createBinding(CPPVisitor.java:191)
org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName.resolveBinding(CPPASTName.java:52)
...


I have increased the heap size and thread stack size considerably (with -vmargs -Xmx2048M -Xss512M) so I don't think it's mu configuration.

Any ideas on what might be wrong? Has this behavior been seen before? I did search the archives and other blogs, but I didn't find anything directly relevant.

Thanks,
Larry.


Back to the top