| Summary: | NPE in ProblemHandler on call hierarchy | ||
|---|---|---|---|
| Product: | [Eclipse Project] JDT | Reporter: | Andrey Loskutov <loskutov> |
| Component: | Core | Assignee: | JDT-Core-Inbox <jdt-core-inbox> |
| Status: | CLOSED DUPLICATE | QA Contact: | |
| Severity: | normal | ||
| Priority: | P3 | CC: | register.eclipse, stephan.herrmann |
| Version: | 4.8 | ||
| Target Milestone: | --- | ||
| Hardware: | PC | ||
| OS: | Windows 10 | ||
| Whiteboard: | |||
|
Description
Andrey Loskutov
Same NPE happens if one tries to search references on the same method in the workspace: java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.problem.ProblemHandler.handle(ProblemHandler.java:145) at org.eclipse.jdt.internal.compiler.problem.ProblemHandler.handle(ProblemHandler.java:226) at org.eclipse.jdt.internal.compiler.problem.ProblemReporter.handle(ProblemReporter.java:2434) at org.eclipse.jdt.internal.compiler.problem.ProblemReporter.rawTypeReference(ProblemReporter.java:7419) at org.eclipse.jdt.internal.compiler.ast.TypeReference.internalResolveType(TypeReference.java:532) at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveType(TypeReference.java:606) at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveType(TypeReference.java:602) at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveSuperType(TypeReference.java:574) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.findSupertype(ClassScope.java:1334) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectSuperclass(ClassScope.java:959) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:1120) at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.connectTypeHierarchy(CompilationUnitScope.java:359) at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:563) at org.eclipse.jdt.internal.core.search.matching.MatchLocator.accept(MatchLocator.java:358) at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:321) at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:258) at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:3277) at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(Scope.java:2989) at org.eclipse.jdt.internal.compiler.ast.SingleTypeReference.getTypeBinding(SingleTypeReference.java:54) at org.eclipse.jdt.internal.compiler.ast.TypeReference.internalResolveType(TypeReference.java:504) at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveType(TypeReference.java:606) at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveType(TypeReference.java:602) at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveSuperType(TypeReference.java:574) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.findSupertype(ClassScope.java:1334) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectSuperclass(ClassScope.java:959) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:1120) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectMemberTypes(ClassScope.java:927) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:1129) at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.connectTypeHierarchy(CompilationUnitScope.java:359) at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:563) at org.eclipse.jdt.internal.core.search.matching.MatchLocator.accept(MatchLocator.java:358) at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:321) at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:258) at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findImport(CompilationUnitScope.java:527) at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findSingleImport(CompilationUnitScope.java:586) at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInImports(CompilationUnitScope.java:435) at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInTypes(CompilationUnitScope.java:501) at org.eclipse.jdt.internal.core.search.matching.MatchLocator.process(MatchLocator.java:1953) at org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1328) at org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1369) at org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1487) at org.eclipse.jdt.internal.core.search.JavaSearchParticipant.locateMatches(JavaSearchParticipant.java:105) at org.eclipse.jdt.internal.core.search.BasicSearchEngine.findMatches(BasicSearchEngine.java:237) at org.eclipse.jdt.internal.core.search.BasicSearchEngine.search(BasicSearchEngine.java:582) at org.eclipse.jdt.core.search.SearchEngine.search(SearchEngine.java:604) at org.eclipse.jdt.internal.ui.search.JavaSearchQuery.run(JavaSearchQuery.java:175) at org.eclipse.search2.internal.ui.InternalSearchUI$InternalSearchJob.run(InternalSearchUI.java:92) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:60) Have you tried rebuilding the java index? (In reply to Till Brychcy from comment #2) > Have you tried rebuilding the java index? Tried now, but now I get error *without stack trace at all*: eclipse.buildId=4.8.0.I20171222-2000 java.version=1.8.0_144 java.vendor=Oracle Corporation BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE Command-line arguments: -os win32 -ws win32 -arch x86_64 org.eclipse.jdt.ui Error Sun Dec 24 16:34:14 CET 2017 Internal Error java.lang.NullPointerException I can't reproduce it. Maybe another class in your workspace that invokes clone (possible for some other class) is the problem. You could try to checkout another copy of jdt.core and launch a debug eclipse on the workspace where the problem appears to figure out for what class the problem appears. (The stack trace not appearing is an optimization, that you can disable by the vm option "-XX:-OmitStackTraceInFastThrow") Now I've got NPE on call hierarchy of org.eclipse.swt.widgets.Composite.setFocus(). I've rebuild index *before* this, for other reason. eclipse.buildId=4.8.0.I20180216-2000 java.version=1.8.0_162 java.vendor=Oracle Corporation BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE Command-line arguments: -os win32 -ws win32 -arch x86_64 -data file:/D:/workspaces/platform/ org.eclipse.jdt.ui Error Mon Feb 19 18:34:21 CET 2018 Internal Error java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.problem.ProblemHandler.handle(ProblemHandler.java:145) at org.eclipse.jdt.internal.compiler.problem.ProblemHandler.handle(ProblemHandler.java:226) at org.eclipse.jdt.internal.compiler.problem.ProblemReporter.handle(ProblemReporter.java:2515) at org.eclipse.jdt.internal.compiler.problem.ProblemReporter.rawTypeReference(ProblemReporter.java:7520) at org.eclipse.jdt.internal.compiler.ast.TypeReference.internalResolveType(TypeReference.java:532) at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveType(TypeReference.java:606) at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveType(TypeReference.java:602) at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveSuperType(TypeReference.java:574) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.findSupertype(ClassScope.java:1334) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectSuperclass(ClassScope.java:959) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:1120) at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.connectTypeHierarchy(CompilationUnitScope.java:359) at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:564) at org.eclipse.jdt.internal.core.search.matching.MatchLocator.accept(MatchLocator.java:359) at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:322) at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:259) at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:3277) at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(Scope.java:2989) at org.eclipse.jdt.internal.compiler.ast.SingleTypeReference.getTypeBinding(SingleTypeReference.java:54) at org.eclipse.jdt.internal.compiler.ast.TypeReference.internalResolveType(TypeReference.java:504) at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveType(TypeReference.java:606) at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveType(TypeReference.java:602) at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveSuperType(TypeReference.java:574) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.findSupertype(ClassScope.java:1334) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectSuperclass(ClassScope.java:959) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:1120) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectMemberTypes(ClassScope.java:927) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:1129) at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.connectTypeHierarchy(CompilationUnitScope.java:359) at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:497) at org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1304) at org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1370) at org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1489) at org.eclipse.jdt.internal.core.search.JavaSearchParticipant.locateMatches(JavaSearchParticipant.java:105) at org.eclipse.jdt.internal.core.search.BasicSearchEngine.findMatches(BasicSearchEngine.java:247) at org.eclipse.jdt.internal.core.search.BasicSearchEngine.search(BasicSearchEngine.java:592) at org.eclipse.jdt.core.search.SearchEngine.search(SearchEngine.java:667) at org.eclipse.jdt.internal.corext.callhierarchy.CallerMethodWrapper.findChildren(CallerMethodWrapper.java:152) at org.eclipse.jdt.internal.corext.callhierarchy.MethodWrapper.performSearch(MethodWrapper.java:302) at org.eclipse.jdt.internal.corext.callhierarchy.MethodWrapper.doFindChildren(MethodWrapper.java:233) at org.eclipse.jdt.internal.corext.callhierarchy.MethodWrapper.getCalls(MethodWrapper.java:85) at org.eclipse.jdt.internal.ui.callhierarchy.DeferredMethodWrapper.getCalls(DeferredMethodWrapper.java:67) at org.eclipse.jdt.internal.ui.callhierarchy.DeferredMethodWrapper.fetchDeferredChildren(DeferredMethodWrapper.java:75) at org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:232) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:60) I don't think this is an index issue. Some theory looking at ... (In reply to Andrey Loskutov from comment #5) > eclipse.buildId=4.8.0.I20180216-2000 OK, this is pretty close to HEAD ... > java.lang.NullPointerException > at org.eclipse.jdt.internal.compiler.problem.ProblemHandler.handle(ProblemHandler.java:145) unitResult is null > at org.eclipse.jdt.internal.compiler.problem.ProblemHandler.handle(ProblemHandler.java:226) > at org.eclipse.jdt.internal.compiler.problem.ProblemReporter.handle(ProblemReporter.java:2515) null is passed if this.referenceContentext == null (or referenceContext.compilationResult() returns null, but that'd be my second guess, only). > at org.eclipse.jdt.internal.compiler.problem.ProblemReporter.rawTypeReference(ProblemReporter.java:7520) > at org.eclipse.jdt.internal.compiler.ast.TypeReference.internalResolveType(TypeReference.java:532) The ProblemReporter is created using the normal idiom of scope.problemReporter(). Prior to bug 527066 there was one kind of scope that couldn't provide a reference context. That fix is in since 2018-01-18. however further down: > at org.eclipse.jdt.internal.compiler.lookup.ClassScope.findSupertype(ClassScope.java:1334) We seem to be working from a ClassScope. I have no idea how a class scope could have a referenceContext without a compilationResult. @Andrey, some info regarding the above from a quick debug session would indeed be very cool ... I'm guessing that bug 534304 nailed the root cause. Let's hope so. *** This bug has been marked as a duplicate of bug 534304 *** |