Community
Participate
Working Groups
NPE at org.eclipse.jdt.internal.compiler.problem.ProblemHandler.handle(ProblemHandler.java:129) --- The issue is present on 4.4.1 as well. (Version: Luna SR1 (4.4.1) Build id: M20140827-0800) The issue is reproducible on master branch tip code. --- Test Case: //Descriptor.java package test; public interface Descriptor <UNMARSHAL_RECORD extends UnmarshalRecord, OBJECT_BUILDER extends CoreObjectBuilder> { public default OBJECT_BUILDER getObjectBuilder() { return null; } } //Unmarshaller.java package test; public abstract class Unmarshaller<CONTEXT extends Context, DESCRIPTOR extends Descriptor> { public CONTEXT getContext() { return null; } } --- Call stack: java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.problem.ProblemHandler.handle(ProblemHandler.java:129) at org.eclipse.jdt.internal.compiler.problem.ProblemHandler.handle(ProblemHandler.java:208) at org.eclipse.jdt.internal.compiler.problem.ProblemReporter.handle(ProblemReporter.java:2369) at org.eclipse.jdt.internal.compiler.problem.ProblemReporter.rawTypeReference(ProblemReporter.java:7141) at org.eclipse.jdt.internal.compiler.ast.TypeReference.internalResolveType(TypeReference.java:503) at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveType(TypeReference.java:574) at org.eclipse.jdt.internal.compiler.lookup.Scope.connectTypeVariables(Scope.java:949) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:1099) at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.connectTypeHierarchy(CompilationUnitScope.java:323) at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:229) at org.eclipse.jdt.internal.compiler.Compiler.internalBeginToCompile(Compiler.java:746) at org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:383) at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:428) at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:367) at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.compile(IncrementalImageBuilder.java:330) at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:304) at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:135) at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildDeltas(JavaBuilder.java:267) at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:195) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:729) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:204) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:244) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:297) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:300) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:356) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:379) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:239) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Please See Bug 442426, Bug 407376.
(In reply to shankha banerjee from comment #1) > Please See Bug 442426, Bug 407376. Bug 407376 is a different issue.
Working on the bug.
Created attachment 246584 [details] Patch Test results are good. --- The test case has been added to IncrementalTests18.java. The problem is not 1.8 specific. I could not find out a better location for the test. --- Problem: ProblemRporter.handle API's: 2237: handle(int, String[], int, String[], int, int, int) 2360: handle(int, String[], String[], int, int) 2379: handle(int problemId, String[], String[], int, int, CompilationResult) set this.referenceContext = null. The call from the API's: 2237: handle(int, String[], int, String[], int, int, int) 2360: handle(int, String[], String[], int, int) leads to the primary problem handler function: 106: ProblemHandler#handle handle(int, String[], int, String[], int, int, int, ReferenceContext referenceContext, CompilationResult unitResult) The parameter unitResult is set to null if referenceContext is null in the handle API's. Dereferencing of unitResult results in a NPE. The parameter unitResult is dereferenced further down. There is a chance that referencContext is not null, unitResult is null and as a result we get NPE. At this point I do not have a test case for this scenario. So leaving it as it is. --- Please review.
My contribution for this defect fix complies with http://www.eclipse.org/legal/CoO.php.
Comment on attachment 246584 [details] Patch The patch is incorrect. A new solution is being devised based on Comment 12, Bug 407376. Thanks
(In reply to shankha banerjee from comment #6) > A new solution is being devised based on Comment 12, > Bug 407376. Bug 407376 Comment 12.
Created attachment 246614 [details] Patch All test results are good. --- This patch addresses the problem mentioned in Bug 442426, Bug 442755, Bug 407376. --- Problem: Please see Bug 407376 Comment 12. The function ProblemReporter#rawTypeReference gets called. This in turn calls isClassPathCorrect: ProblemReporter.isClassPathCorrect : 4686 UnresolvedReferenceBinding.resolve : 104 BinaryTypeBinding.resolveType : 183 TypeVariableBinding.resolve : 664 BinaryTypeBinding.typeVariables : 1836 BinaryTypeBinding(ReferenceBinding).readableName : 1599 ProblemReporter.rawTypeReference : 7150 The handle API called from isClassPathCorrect clears the referenceContext. The call finishes and rawTypeReference calls handle(int, String[], String[], int, int) which in turn calls handle(int, String[], String[], int, int, ReferenceContext, CompilationResult unitResult) The parameter unitResult is set to null as referenceContext is null. This results in NPE. Solution: The patch saves and restores referenceContext in isClassPathCorrect. --- Please review.
Comment on attachment 246614 [details] Patch Further investigation needs to be done with respect to error messages and verify if we throw all the correct error messages. We seem to be missing out on one error message.
Created attachment 246645 [details] Patch Test results are good. --- Please have a look at Comment 8 which explains the issue in detail. --- Relevant error messages have been added. We do not miss any errors. Thanks
Patch looks good. Released here: http://git.eclipse.org/c/jdt/eclipse.jdt.core.git/commit/?id=df84bc0b0e74080458b4e3f35c6e77ec6fed2587 Thanks Shankha.
*** Bug 442426 has been marked as a duplicate of this bug. ***
*** Bug 407376 has been marked as a duplicate of this bug. ***
Verified for 4.5 M2 using build I20140916-2000
Great! Thank you!
Reopening for back port
Back ported via: http://git.eclipse.org/c/jdt/eclipse.jdt.core.git/commit/?h=R4_4_maintenance&id=ceac2559bd03e3be4f9c3ce6b0cad16f6d4f2859
Verified for Eclipse Luna SR2 Build id: M20150114-1500