Bug 304841 - [search] NPE in IndexSelector.initializeIndexLocations
Summary: [search] NPE in IndexSelector.initializeIndexLocations
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.6   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.6 M6   Edit
Assignee: Frederic Fusier CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-03-05 11:43 EST by Markus Keller CLA
Modified: 2010-03-09 16:17 EST (History)
1 user (show)

See Also:


Attachments
Proposed patch (4.07 KB, patch)
2010-03-08 05:46 EST, Frederic Fusier CLA
no flags Details | Diff
New proposed patch (5.33 KB, patch)
2010-03-08 07:47 EST, Frederic Fusier CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Markus Keller CLA 2010-03-05 11:43:49 EST
N20100304-2130, looks like a regression from bug 102279

- put this into a CU called "Hello.java":

package p;
class One {
}
class Two {
}

- search for references to Two

=> NPE:

!ENTRY org.eclipse.core.jobs 4 2 2010-03-05 17:36:23.577
!MESSAGE An internal error occurred during: "Java Search".
!STACK 0
java.lang.NullPointerException
	at org.eclipse.jdt.internal.core.search.IndexSelector.initializeIndexLocations(IndexSelector.java:202)
	at org.eclipse.jdt.internal.core.search.IndexSelector.getIndexLocations(IndexSelector.java:281)
	at org.eclipse.jdt.internal.core.search.JavaSearchParticipant.selectIndexes(JavaSearchParticipant.java:107)
	at org.eclipse.jdt.internal.core.search.PatternSearchJob.getIndexes(PatternSearchJob.java:79)
	at org.eclipse.jdt.internal.core.search.PatternSearchJob.ensureReadyToRun(PatternSearchJob.java:50)
	at org.eclipse.jdt.internal.core.search.processing.JobManager.performConcurrentJob(JobManager.java:174)
	at org.eclipse.jdt.internal.core.search.BasicSearchEngine.findMatches(BasicSearchEngine.java:222)
	at org.eclipse.jdt.internal.core.search.BasicSearchEngine.search(BasicSearchEngine.java:523)
	at org.eclipse.jdt.core.search.SearchEngine.search(SearchEngine.java:613)
	at org.eclipse.jdt.internal.ui.search.JavaSearchQuery.run(JavaSearchQuery.java:144)
	at org.eclipse.search2.internal.ui.InternalSearchUI$InternalSearchJob.run(InternalSearchUI.java:91)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Comment 1 Markus Keller CLA 2010-03-05 11:48:40 EST
Workaround is to disable Auto Build.

The bug is that the code does not consider that ITypeRoot#findPrimaryType() may be null.
Comment 2 Frederic Fusier CLA 2010-03-05 11:50:41 EST
I'll fix this for M6...
Comment 3 Frederic Fusier CLA 2010-03-08 05:46:22 EST
Created attachment 161273 [details]
Proposed patch

This patch adds the missing null check and a test to verify that this NPE won't happen again...
Comment 4 Frederic Fusier CLA 2010-03-08 07:47:04 EST
Created attachment 161283 [details]
New proposed patch

This patch also fixes a potential CCE...
Comment 5 Frederic Fusier CLA 2010-03-08 09:28:34 EST
(In reply to comment #4)
> Created an attachment (id=161283) [details]
> New proposed patch
> 
Released for 3.6M6 in HEAD stream.
Comment 6 Olivier Thomann CLA 2010-03-09 15:53:30 EST
Verified for 3.6M6 using I20100309-0809 that I no longer get a NPE inside the indexes.
Now I get:
java.lang.NullPointerException
at org.eclipse.ui.part.PageBookView.createPage(PageBookView.java:415)
at org.eclipse.ui.part.PageBookView.partActivated(PageBookView.java:757)
at org.eclipse.search2.internal.ui.SearchView.partActivated(SearchView.java:319)
at org.eclipse.search2.internal.ui.SearchView.internalShowSearchPage(SearchView.java:403)
at org.eclipse.search2.internal.ui.SearchView.showSearchResult(SearchView.java:374)
at org.eclipse.search2.internal.ui.SearchViewManager.showNewSearchQuery(SearchViewManager.java:70)
at org.eclipse.search2.internal.ui.SearchViewManager$1.queryAdded(SearchViewManager.java:47)
at org.eclipse.search2.internal.ui.QueryManager.fireAdded(QueryManager.java:93)
at org.eclipse.search2.internal.ui.QueryManager.addQuery(QueryManager.java:70)
at org.eclipse.search2.internal.ui.InternalSearchUI.addQuery(InternalSearchUI.java:309)
at org.eclipse.search2.internal.ui.InternalSearchUI.runSearchInBackground(InternalSearchUI.java:167)
at org.eclipse.search.ui.NewSearchUI.runQueryInBackground(NewSearchUI.java:132)
at org.eclipse.search.ui.NewSearchUI.runQueryInBackground(NewSearchUI.java:105)
at org.eclipse.jdt.internal.ui.search.SearchUtil.runQueryInBackground(SearchUtil.java:79)
at org.eclipse.jdt.ui.actions.FindAction.performNewSearch(FindAction.java:284)
at org.eclipse.jdt.ui.actions.FindAction.run(FindAction.java:267)
at org.eclipse.jdt.ui.actions.FindReferencesAction.run(FindReferencesAction.java:101)
at org.eclipse.jdt.ui.actions.FindAction.run(FindAction.java:230)
at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchA
Comment 7 Olivier Thomann CLA 2010-03-09 16:17:11 EST
This seems to be related to bug 305156.