Bug 432059 - NPE while parsing the QT source code
Summary: NPE while parsing the QT source code
Status: NEW
Alias: None
Product: CDT
Classification: Tools
Component: cdt-parser (show other bugs)
Version: 8.3.0   Edit
Hardware: PC Linux
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Project Inbox CLA
QA Contact: Jonah Graham CLA
URL:
Whiteboard:
Keywords:
: 393622 (view as bug list)
Depends on:
Blocks:
 
Reported: 2014-04-04 16:28 EDT by Missing name CLA
Modified: 2020-09-04 15:26 EDT (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Missing name CLA 2014-04-04 16:28:16 EDT
What steps will reproduce the problem?
1. clone the qt4 repo and add it as cpp project with autotools to eclipse
2. reconfigure the project
3. watch the errors pile up in error log


-- Error Details --
Date: Fri Apr 04 22:18:21 CEST 2014
Message: Error while parsing /Qt/src/3rdparty/webkit/Source/WebCore/platform/graphics/GlyphPageTreeNode.cpp.
Severity: Error
Product: Eclipse 2.0.2.20140224-0000 (org.eclipse.epp.package.cpp.product)
Plugin: org.eclipse.cdt.core
Session Data:
eclipse.buildId=4.3.2.M20140221-1700
java.version=1.7.0_45
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Framework arguments:  -product org.eclipse.epp.package.cpp.product
Command-line arguments:  -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.cpp.product

Exception Stack Trace:
java.lang.NullPointerException
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalBinding.getBinding(EvalBinding.java:103)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalBinding.computeType(EvalBinding.java:250)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalBinding.getTypeOrFunctionSet(EvalBinding.java:244)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateNonTypeArgument.isPackExpansion(CPPTemplateNonTypeArgument.java:90)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.instantiateArguments(CPPTemplates.java:1156)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.resolveDeferredClassInstance(CPPTemplates.java:2739)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.resolveUnknown(CPPTemplates.java:2669)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.instantiateType(CPPTemplates.java:1296)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.instantiateType(CPPTemplates.java:1347)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.instantiateType(CPPTemplates.java:1347)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.TemplateArgumentDeduction.deduceFromFunctionArgs(TemplateArgumentDeduction.java:136)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.TemplateArgumentDeduction.deduceForFunctionCall(TemplateArgumentDeduction.java:99)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.instantiateForFunctionCall(CPPTemplates.java:1990)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.instantiateForFunctionCall(CPPTemplates.java:1969)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.resolveFunction(CPPSemantics.java:2436)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.resolveAmbiguities(CPPSemantics.java:2138)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.resolveBinding(CPPSemantics.java:305)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor.resolveBinding(CPPVisitor.java:1375)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor.createBinding(CPPVisitor.java:302)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName.createIntermediateBinding(CPPASTName.java:61)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNameBase.resolvePreBinding(CPPASTNameBase.java:79)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionCallExpression.checkForExplicitTypeConversion(CPPASTFunctionCallExpression.java:312)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionCallExpression.computeEvaluation(CPPASTFunctionCallExpression.java:297)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionCallExpression.getEvaluation(CPPASTFunctionCallExpression.java:288)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionCallExpression.getOverload(CPPASTFunctionCallExpression.java:263)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionCallExpression.getImplicitNames(CPPASTFunctionCallExpression.java:122)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionCallExpression.accept(CPPASTFunctionCallExpression.java:191)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTExpressionStatement.accept(CPPASTExpressionStatement.java:73)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTCompoundStatement.accept(CPPASTCompoundStatement.java:85)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionDefinition.accept(CPPASTFunctionDefinition.java:198)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNamespaceDefinition.accept(CPPASTNamespaceDefinition.java:135)
	at org.eclipse.cdt.internal.core.dom.parser.ASTTranslationUnit.accept(ASTTranslationUnit.java:265)
	at org.eclipse.cdt.internal.core.pdom.PDOMWriter.process(PDOMWriter.java:495)
	at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.writeToIndex(AbstractIndexerTask.java:1229)
	at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.parseFile(AbstractIndexerTask.java:1050)
	at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.parseLinkage(AbstractIndexerTask.java:857)
	at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.runTask(AbstractIndexerTask.java:537)
	at org.eclipse.cdt.internal.core.pdom.indexer.PDOMIndexerTask.run(PDOMIndexerTask.java:146)
	at org.eclipse.cdt.internal.core.pdom.indexer.PDOMUpdateTask.run(PDOMUpdateTask.java:94)
	at org.eclipse.cdt.internal.core.pdom.PDOMIndexerJob.run(PDOMIndexerJob.java:137)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Comment 1 Marc-André Laperle CLA 2014-04-04 19:30:06 EDT
This should be fixed in the upcoming CDT 8.4, could you try that version?
You can go to Help > Install New Software and add this update site:
http://download.eclipse.org/tools/cdt/builds/8.4/nightly
Comment 2 Missing name CLA 2014-04-05 15:55:03 EDT
The NPEs are gone but the following 2 errors remain.
Should I open a new bug report for them?
Comment 3 Missing name CLA 2014-04-05 15:55:30 EDT
org.eclipse.cdt.core.dom.ast.DOMException
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.createTemplateArgumentArray(CPPTemplates.java:1933)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.LookupData.<init>(LookupData.java:125)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.createLookupData(CPPSemantics.java:652)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.resolveBinding(CPPSemantics.java:286)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor.createBinding(CPPVisitor.java:280)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.createBinding(CPPTemplates.java:646)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTTemplateId.createIntermediateBinding(CPPASTTemplateId.java:124)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNameBase.resolvePreBinding(CPPASTNameBase.java:94)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTQualifiedName.resolvePreBinding(CPPASTQualifiedName.java:98)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionCallExpression.checkForExplicitTypeConversion(CPPASTFunctionCallExpression.java:312)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionCallExpression.computeEvaluation(CPPASTFunctionCallExpression.java:297)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionCallExpression.getEvaluation(CPPASTFunctionCallExpression.java:288)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTInitializerList.createEvaluation(CPPASTInitializerList.java:169)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTInitializerList.getEvaluation(CPPASTInitializerList.java:161)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTBinaryExpression.computeEvaluation(CPPASTBinaryExpression.java:278)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTBinaryExpression.getEvaluation(CPPASTBinaryExpression.java:269)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTBinaryExpression.getOverload(CPPASTBinaryExpression.java:260)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTBinaryExpression.getImplicitNames(CPPASTBinaryExpression.java:131)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTBinaryExpression.acceptWithoutRecursion(CPPASTBinaryExpression.java:216)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTBinaryExpression.accept(CPPASTBinaryExpression.java:149)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTExpressionStatement.accept(CPPASTExpressionStatement.java:73)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTCompoundStatement.accept(CPPASTCompoundStatement.java:85)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionDefinition.accept(CPPASTFunctionDefinition.java:202)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNamespaceDefinition.accept(CPPASTNamespaceDefinition.java:139)
	at org.eclipse.cdt.internal.core.dom.parser.ASTTranslationUnit.accept(ASTTranslationUnit.java:265)
	at org.eclipse.cdt.internal.core.pdom.PDOMWriter.process(PDOMWriter.java:497)
	at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.writeToIndex(AbstractIndexerTask.java:1234)
	at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.parseFile(AbstractIndexerTask.java:1052)
	at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.parseLinkage(AbstractIndexerTask.java:857)
	at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.runTask(AbstractIndexerTask.java:537)
	at org.eclipse.cdt.internal.core.pdom.indexer.PDOMIndexerTask.run(PDOMIndexerTask.java:146)
	at org.eclipse.cdt.internal.core.pdom.indexer.PDOMRebuildTask.run(PDOMRebuildTask.java:87)
	at org.eclipse.cdt.internal.core.pdom.PDOMIndexerJob.run(PDOMIndexerJob.java:137)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Comment 4 Missing name CLA 2014-04-05 15:56:06 EDT
java.lang.Exception: Unsafe method call. Instantiation of dependent expressions may not work.
	at org.eclipse.cdt.internal.core.dom.parser.cpp.AbstractCPPClassSpecializationScope.getImplicitMethods(AbstractCPPClassSpecializationScope.java:199)
	at org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkage.addImplicitMethods(PDOMCPPLinkage.java:651)
	at org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkage.addBinding(PDOMCPPLinkage.java:341)
	at org.eclipse.cdt.internal.core.pdom.dom.PDOMFile.createPDOMName(PDOMFile.java:510)
	at org.eclipse.cdt.internal.core.pdom.dom.PDOMFile.addNames(PDOMFile.java:477)
	at org.eclipse.cdt.internal.core.pdom.WritablePDOM.addFileContent(WritablePDOM.java:155)
	at org.eclipse.cdt.internal.core.index.WritableCIndex.setFileContent(WritableCIndex.java:86)
	at org.eclipse.cdt.internal.core.pdom.PDOMWriter.storeFileInIndex(PDOMWriter.java:615)
	at org.eclipse.cdt.internal.core.pdom.PDOMWriter.storeSymbolsInIndex(PDOMWriter.java:322)
	at org.eclipse.cdt.internal.core.pdom.PDOMWriter.addSymbols(PDOMWriter.java:271)
	at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.writeToIndex(AbstractIndexerTask.java:1236)
	at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.parseFile(AbstractIndexerTask.java:1052)
	at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.parseLinkage(AbstractIndexerTask.java:857)
	at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.runTask(AbstractIndexerTask.java:537)
	at org.eclipse.cdt.internal.core.pdom.indexer.PDOMIndexerTask.run(PDOMIndexerTask.java:146)
	at org.eclipse.cdt.internal.core.pdom.indexer.PDOMRebuildTask.run(PDOMRebuildTask.java:87)
	at org.eclipse.cdt.internal.core.pdom.PDOMIndexerJob.run(PDOMIndexerJob.java:137)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Comment 5 Nathan Ridge CLA 2014-04-06 18:30:44 EDT
Patch that fixes the error from comment 4: https://git.eclipse.org/r/24512

Regarding the error from comment 3: it would be very helpful to have a reduced example that triggers it. Note that since this exception is caught, it should not have any negative effects beyond perhaps incorrect name resolution at the spot that triggered the exception.
Comment 6 Missing name CLA 2014-04-10 15:08:49 EDT
for the exception from comment 3 i have found that when you
do Index > Update with modified files on the folder
qt/src/3rdparty/webkit/Source/ThirdParty/ANGLE/src/libGLESv2
it will trigger several of them after ~5 sec.
You might need to run a full index once though.

OTOH I have no idea which source really triggers them as the error description is rather vague. Better error messages might help.

The error from comment 4 is gone with the latest nightly of CDT.
Comment 7 Nathan Ridge CLA 2016-12-22 00:14:13 EST
(In reply to Nathan Ridge from comment #5)
> Patch that fixes the error from comment 4: https://git.eclipse.org/r/24512

(This patch was committed in http://git.eclipse.org/c/cdt/org.eclipse.cdt.git/commit/?id=b4d65483edfeb782388b24a5df489a20072af50a).
Comment 8 Nathan Ridge CLA 2016-12-22 00:14:26 EST
*** Bug 393622 has been marked as a duplicate of this bug. ***