mardi 23 janvier 2018

Eclipse-cdt indexer crashes with NullPointerExceptions

Trying to import and index a large c++11 project in Eclipse-cdt, and the indexer crashes. In the log work_space/.metadata/.log there are thousands of errors of this type :

!ENTRY org.eclipse.cdt.core 4 0 2018-01-22 20:20:49.031
!MESSAGE Error while parsing /Step/SendOne.cpp.
!STACK 0
java.lang.NullPointerException
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.Conversions.listInitializationSequenceHelper(Conversions.java:435)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.Conversions.listInitializationSequence(Conversions.java:427)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.Conversions.nonReferenceConversion(Conversions.java:296)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.Conversions.checkImplicitConversionSequence(Conversions.java:229)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.Conversions.checkAggregateInitialization(Conversions.java:378)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.Conversions.listInitializationSequenceHelper(Conversions.java:471)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.Conversions.listInitializationSequence(Conversions.java:427)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.Conversions.nonReferenceConversion(Conversions.java:296)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.Conversions.checkImplicitConversionSequence(Conversions.java:229)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.findImplicitlyCalledConstructor(CPPSemantics.java:3697)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.findImplicitlyCalledConstructor(CPPSemantics.java:3662)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.findImplicitlyCalledConstructor(CPPSemantics.java:3623)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTDeclarator.getImplicitNames(CPPASTDeclarator.java:282)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTDeclarator.accept(CPPASTDeclarator.java:193)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTSimpleDeclaration.accept(CPPASTSimpleDeclaration.java:110)
    at org.eclipse.cdt.internal.core.dom.parser.ASTTranslationUnit.accept(ASTTranslationUnit.java:275)
    at org.eclipse.cdt.internal.core.pdom.PDOMWriter.process(PDOMWriter.java:533)
    at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.writeToIndex(AbstractIndexerTask.java:1279)
    at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.parseFile(AbstractIndexerTask.java:1096)
    at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.parseLinkage(AbstractIndexerTask.java:896)
    at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.runTask(AbstractIndexerTask.java:557)
    at org.eclipse.cdt.internal.core.pdom.indexer.PDOMIndexerTask.run(PDOMIndexerTask.java:161)
    at org.eclipse.cdt.internal.core.pdom.indexer.PDOMRebuildTask.run(PDOMRebuildTask.java:90)
    at org.eclipse.cdt.internal.core.pdom.PDOMIndexerJob.run(PDOMIndexerJob.java:155)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)

This error shows up for pretty much all cpp files. At the very bottom of the log:

!ENTRY org.eclipse.cdt.core 4 0 2018-01-23 09:24:52.304
!MESSAGE Error
!STACK 1
org.eclipse.core.runtime.CoreException: Too many errors while indexing, stopping indexer.
    at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.swallowError(AbstractIndexerTask.java:1189)
    at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.parseFile(AbstractIndexerTask.java:1117)
    at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.parseLinkage(AbstractIndexerTask.java:896)
    at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.runTask(AbstractIndexerTask.java:557)
    at org.eclipse.cdt.internal.core.pdom.indexer.PDOMIndexerTask.run(PDOMIndexerTask.java:161)
    at org.eclipse.cdt.internal.core.pdom.indexer.PDOMRebuildTask.run(PDOMRebuildTask.java:90)
    at org.eclipse.cdt.internal.core.pdom.PDOMIndexerJob.run(PDOMIndexerJob.java:155)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)
!SUBENTRY 1 org.eclipse.cdt.core 4 0 2018-01-23 09:24:52.305
!MESSAGE Too many errors while indexing, stopping indexer.

!ENTRY org.eclipse.cdt.core 1 0 2018-01-23 09:24:52.309
!MESSAGE Indexed 'my_project' (168 sources, 2,583 headers) in 2,258 sec: 255,357 declarations; 811,215 references; 0 unresolved inclusions; 41 syntax errors; 1,689 unresolved names (0.18%)

I am on Ubuntu 16.04.3 LTS and tried with both gcc 4.9.3 and gcc 5.4.0 20160609.

Eclipse Version: Oxygen.2 Release (4.7.2) Build id: 20171218-0600, however also tried with different versions of Neon too.

It is a custom makefile project, and builds correctly both from within eclipse and from terminal. Code navigation just doesn't work, and vast majority of code is red.

Aucun commentaire:

Enregistrer un commentaire