Bug 292174 - Indexer fast crashes with NPE if enclosing class definition is not available.
Summary: Indexer fast crashes with NPE if enclosing class definition is not available.
Status: RESOLVED FIXED
Alias: None
Product: CDT
Classification: Tools
Component: cdt-core (show other bugs)
Version: 6.0   Edit
Hardware: All Mac OS X - Carbon (unsup.)
: P3 normal (vote)
Target Milestone: 6.0.2   Edit
Assignee: Project Inbox CLA
QA Contact: Doug Schaefer CLA
URL:
Whiteboard:
Keywords: contributed
: 294934 313562 (view as bug list)
Depends on:
Blocks:
 
Reported: 2009-10-13 13:55 EDT by Tobias Hahn CLA
Modified: 2010-05-20 04:24 EDT (History)
2 users (show)

See Also:


Attachments
A patch fixing the issue. (2.67 KB, patch)
2009-10-13 13:58 EDT, Tobias Hahn CLA
mschorn.eclipse: iplog+
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Tobias Hahn CLA 2009-10-13 13:55:01 EDT
User-Agent:       Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; de-de) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9
Build Identifier: CVS

Under certain situations the fast indexer crashes when parsing source files containing partial declarations, i.e. when parsing class.decl in the following example:

class.cpp:

class MyClass
{
  #include "class.decl"
};

class.decl:

public:
  MyClass();

private:
  void f();

Reproducible: Always

Steps to Reproduce:
Unfortunately, I have not been able to create a minimal example exposing the bug. However, bug 279906 seems a dup of this one. The stack trace is:

Error while parsing class.cpp.:Error while parsing class.decl.

java.lang.NullPointerException
at org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkage.onCreateName(PDOMCPPLinkage.java:908)
at org.eclipse.cdt.internal.core.pdom.dom.PDOMFile.createPDOMName(PDOMFile.java:309)
at org.eclipse.cdt.internal.core.pdom.dom.PDOMFile.addNames(PDOMFile.java:273)
at org.eclipse.cdt.internal.core.pdom.WritablePDOM.addFileContent(WritablePDOM.java:67)
at org.eclipse.cdt.internal.core.index.WritableCIndex.setFileContent(WritableCIndex.java:75)
at org.eclipse.cdt.internal.core.pdom.PDOMWriter.storeFileInIndex(PDOMWriter.java:484)
at org.eclipse.cdt.internal.core.pdom.PDOMWriter.storeSymbolsInIndex(PDOMWriter.java:208)
at org.eclipse.cdt.internal.core.pdom.PDOMWriter.addSymbols(PDOMWriter.java:162)
at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.writeToIndex(AbstractIndexerTask.java:734)
at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.parseFile(AbstractIndexerTask.java:692)
at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.parseLinkage(AbstractIndexerTask.java:578)
at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.runTask(AbstractIndexerTask.java:317)
at org.eclipse.cdt.internal.core.pdom.indexer.PDOMIndexerTask.run(PDOMIndexerTask.java:122)
at org.eclipse.cdt.internal.core.pdom.indexer.PDOMUpdateTask.run(PDOMUpdateTask.java:81)
at org.eclipse.cdt.internal.core.pdom.PDOMIndexerJob.run(PDOMIndexerJob.java:137)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Comment 1 Tobias Hahn CLA 2009-10-13 13:58:30 EDT
Created attachment 149457 [details]
A patch fixing the issue.

According to its documentation, org.eclipse.cdt.internal.core.pdom.dom.PDOMName.getEnclosingDefinition() may return null. This is not checked in several instances, leading to a crash when getEnclosingDefinition() actually does return null. This patch adds the necessary guards.
Comment 2 Markus Schorn CLA 2009-10-14 07:21:26 EDT
Thx, the issue can be reproduced by (illegally) putting a friend declaration on global scope. This is not a duplicate of bug 279906.

Applied patch for CDT 6.0.2 and 6.1 > 20091014.
Comment 3 Markus Schorn CLA 2009-11-12 12:07:41 EST
*** Bug 294934 has been marked as a duplicate of this bug. ***
Comment 4 Markus Schorn CLA 2010-05-20 04:24:36 EDT
*** Bug 313562 has been marked as a duplicate of this bug. ***