sporadic test failures due to java.lang.AssertionError at com.sun.tools.javac.comp.Check.checkFlags
- Dominant language
- Java
- Stars
- 3.1k
- Forks
- 935
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 17
Description
`org.netbeans.modules.java.hints.FieldForUnusedParamTest` fails periodically in CI
`testOrdering1`, `testMultipleCtors`, `testSimple1` and `testSimple3` were all observed failing similarly
```
java.lang.AssertionError: Log:
Starting test testOrdering1
[org.netbeans.api.java.source.ElementHandle] THREAD: Test Watch Dog: testOrdering1 MSG: Resolved type is null for kind = PARAMETER signatures.length = 4
[org.netbeans.api.java.source.ElementHandle] THREAD: Test Watch Dog: testOrdering1 MSG: Cannot resolve: ElementHandle[kind=PARAMETER; sigs=test.Test (III)V b ]
at com.sun.tools.javac.comp.Check.checkFlags(Check.java:1293)
at com.sun.tools.javac.comp.Enter.visitClassDef(Enter.java:506)
at org.netbeans.lib.nbjavac.services.NBEnter.visitClassDef(NBEnter.java:62)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:859)
at com.sun.tools.javac.comp.Enter.classEnter(Enter.java:292)
at com.sun.tools.javac.comp.Enter.classEnter(Enter.java:307)
at com.sun.tools.javac.comp.Enter.visitTopLevel(Enter.java:391)
at org.netbeans.lib.nbjavac.services.NBEnter.visitTopLevel(NBEnter.java:71)
at com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:555)
at com.sun.tools.javac.comp.Enter.classEnter(Enter.java:292)
at com.sun.tools.javac.comp.Enter.classEnter(Enter.java:307)
at com.sun.tools.javac.comp.Enter.complete(Enter.java:620)
at com.sun.tools.javac.comp.Enter.main(Enter.java:601)
at com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:1078)
at com.sun.tools.javac.api.JavacTaskImpl.enter(JavacTaskImpl.java:345)
at com.sun.tools.javac.api.JavacTaskImpl.ensureEntered(JavacTaskImpl.java:494)
at com.sun.tools.javac.model.JavacElements.ensureEntered(JavacElements.java:887)
at com.sun.tools.javac.model.JavacElements.doGetTypeElement(JavacElements.java:177)
at com.sun.tools.javac.model.JavacElements.getTypeElement(JavacElements.java:166)
at com.sun.tools.javac.model.JavacElements.getTypeElement(JavacElements.java:90)
at org.netbeans.modules.java.source.save.ElementOverlay.resolve(ElementOverlay.java:198)
at org.netbeans.modules.java.source.save.ElementOverlay.resolve(ElementOverlay.java:187)
at org.netbeans.modules.java.source.save.ElementOverlay.unnamedPackage(ElementOverlay.java:428)
at org.netbeans.modules.java.source.pretty.ImportAnalysis2.<init>(ImportAnalysis2.java:95)
at org.netbeans.modules.java.source.pretty.ImportAnalysis2.<init>(ImportAnalysis2.java:85)
at org.netbeans.api.java.source.WorkingCopy.processCurrentCompilationUnit(WorkingCopy.java:783)
at org.netbeans.api.java.source.WorkingCopy.getChanges(WorkingCopy.java:1321)
at org.netbeans.api.java.source.JavaSource$1.run(JavaSource.java:672)
at org.netbeans.api.java.source.JavaSource$1.run(JavaSource.java:661)
at org.netbeans.api.java.source.JavaSource$MultiTask.run(JavaSource.java:504)
at org.netbeans.modules.parsing.impl.TaskProcessor.callUserTask(TaskProcessor.java:586)
at org.netbeans.modules.parsing.api.ParserManager$UserTaskAction.run(ParserManager.java:197)
at org.netbeans.modules.parsing.api.ParserManager$UserTaskAction.run(ParserManager.java:180)
at org.netbeans.modules.parsing.impl.TaskProcessor$2.call(TaskProcessor.java:181)
at org.netbeans.modules.parsing.impl.TaskProcessor$2.call(TaskProcessor.java:178)
at org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.priorityIO(FileChangedManager.java:153)
at org.netbeans.modules.masterfs.providers.ProvidedExtensions.priorityIO(ProvidedExtensions.java:335)
at org.netbeans.modules.parsing.nb.DataObjectEnvFactory.runPriorityIO(DataObjectEnvFactory.java:118)
at org.netbeans.modules.parsing.impl.Utilities.runPriorityIO(Utilities.java:67)
at org.netbeans.modules.parsing.impl.TaskProcessor.runUserTask(TaskProcessor.java:178)
at org.netbeans.modules.parsing.api.ParserManager.parse(ParserManager.java:83)
at org.netbeans.api.java.source.JavaSource.runUserActionTaskImpl(JavaSource.java:454)
at org.netbeans.api.java.source.JavaSource.runUserActionTask(JavaSource.java:425)
at org.netbeans.api.java.source.JavaSource.runModificationTask(JavaSource.java:680)
at org.netbeans.modules.java.hints.FieldForUnusedParam$FixImpl.implement(FieldForUnusedParam.java:228)
at org.netbeans.modules.java.hints.infrastructure.TreeRuleTestBase.performFixTest(TreeRuleTestBase.java:232)
at org.netbeans.modules.java.hints.infrastructure.TreeRuleTestBase.performFixTest(TreeRuleTestBase.java:187)
at org.netbeans.modules.java.hints.infrastructure.TreeRuleTestBase.performFixTest(TreeRuleTestBase.java:183)
at org.netbeans.modules.java.hints.FieldForUnusedParamTest.testOrdering1(FieldForUnusedParamTest.java:86)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.netbeans.modules.java.hints.infrastructure.TreeRuleTestBase.runTest(TreeRuleTestBase.java:143)
at org.netbeans.junit.NbTestCase.access$200(NbTestCase.java:83)
at org.netbeans.junit.NbTestCase$2.doSomething(NbTestCase.java:488)
at org.netbeans.junit.NbTestCase$1Guard.run(NbTestCase.java:409)
at java.base/java.lang.Thread.run(Thread.java:840)
```
a second test (different base class) had a very similar stack trace, but it fails rarely:
`testSimple: org.netbeans.modules.java.hints.errors.RenameConstructorTest`
```
java.lang.AssertionError
at com.sun.tools.javac.comp.Check.checkFlags(Check.java:1293)
at com.sun.tools.javac.comp.Enter.visitClassDef(Enter.java:506)
at org.netbeans.lib.nbjavac.services.NBEnter.visitClassDef(NBEnter.java:62)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:859)
at com.sun.tools.javac.comp.Enter.classEnter(Enter.java:292)
at com.sun.tools.javac.comp.Enter.classEnter(Enter.java:307)
at com.sun.tools.javac.comp.Enter.visitTopLevel(Enter.java:391)
at org.netbeans.lib.nbjavac.services.NBEnter.visitTopLevel(NBEnter.java:71)
at com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:555)
at com.sun.tools.javac.comp.Enter.classEnter(Enter.java:292)
at com.sun.tools.javac.comp.Enter.classEnter(Enter.java:307)
at com.sun.tools.javac.comp.Enter.complete(Enter.java:620)
at com.sun.tools.javac.comp.Enter.main(Enter.java:601)
at com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:1078)
at com.sun.tools.javac.api.JavacTaskImpl.enter(JavacTaskImpl.java:345)
at com.sun.tools.javac.api.JavacTaskImpl.ensureEntered(JavacTaskImpl.java:494)
at com.sun.tools.javac.model.JavacElements.ensureEntered(JavacElements.java:887)
at com.sun.tools.javac.model.JavacElements.doGetTypeElement(JavacElements.java:177)
at com.sun.tools.javac.model.JavacElements.getTypeElement(JavacElements.java:166)
at com.sun.tools.javac.model.JavacElements.getTypeElement(JavacElements.java:90)
at org.netbeans.modules.java.source.save.ElementOverlay.resolve(ElementOverlay.java:198)
at org.netbeans.modules.java.source.save.ElementOverlay.resolve(ElementOverlay.java:187)
at org.netbeans.modules.java.source.save.ElementOverlay.unnamedPackage(ElementOverlay.java:428)
at org.netbeans.modules.java.source.pretty.ImportAnalysis2.(ImportAnalysis2.java:95)
at org.netbeans.modules.java.source.pretty.ImportAnalysis2.(ImportAnalysis2.java:85)
at org.netbeans.api.java.source.WorkingCopy.processCurrentCompilationUnit(WorkingCopy.java:783)
at org.netbeans.api.java.source.WorkingCopy.getChanges(WorkingCopy.java:1321)
at org.netbeans.api.java.source.ModificationResult$1.run(ModificationResult.java:121)
at org.netbeans.modules.parsing.impl.TaskProcessor.callUserTask(TaskProcessor.java:586)
at org.netbeans.modules.parsing.api.ParserManager$UserTaskAction.run(ParserManager.java:197)
at org.netbeans.modules.parsing.api.ParserManager$UserTaskAction.run(ParserManager.java:180)
at org.netbeans.modules.parsing.impl.TaskProcessor$2.call(TaskProcessor.java:181)
at org.netbeans.modules.parsing.impl.TaskProcessor$2.call(TaskProcessor.java:178)
at org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.priorityIO(FileChangedManager.java:153)
at org.netbeans.modules.masterfs.providers.ProvidedExtensions.priorityIO(ProvidedExtensions.java:335)
at org.netbeans.modules.parsing.nb.DataObjectEnvFactory.runPriorityIO(DataObjectEnvFactory.java:118)
at org.netbeans.modules.parsing.impl.Utilities.runPriorityIO(Utilities.java:67)
at org.netbeans.modules.parsing.impl.TaskProcessor.runUserTask(TaskProcessor.java:178)
at org.netbeans.modules.parsing.api.ParserManager.parse(ParserManager.java:83)
at org.netbeans.api.java.source.ModificationResult.runModificationTask(ModificationResult.java:105)
at org.netbeans.modules.java.hints.errors.RenameConstructor$RenameConstructorFix.implement(RenameConstructor.java:161)
at org.netbeans.modules.java.hints.infrastructure.ErrorHintsTestBase.performFixTest(ErrorHintsTestBase.java:307)
at org.netbeans.modules.java.hints.infrastructure.ErrorHintsTestBase.performFixTest(ErrorHintsTestBase.java:262)
at org.netbeans.modules.java.hints.infrastructure.ErrorHintsTestBase.performFixTest(ErrorHintsTestBase.java:258)
at org.netbeans.modules.java.hints.errors.RenameConstructorTest.testSimple(RenameConstructorTest.java:41)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.netbeans.junit.NbTestCase.access$200(NbTestCase.java:83)
at org.netbeans.junit.NbTestCase$2.doSomething(NbTestCase.java:488)
at org.netbeans.junit.NbTestCase$1Guard.run(NbTestCase.java:409)
at java.base/java.lang.Thread.run(Thread.java:840)
```
unfortunately I couldn't reproduce it locally so far
Contributor guide
Research direction
Start with org.netbeans.modules.java.hints.FieldForUnusedParamTest, especially testOrdering1, testMultipleCtors, testSimple1 and testSimple3, and compare the similar failure in RenameConstructorTest.testSimple. Trace the reported stack through FieldForUnusedParam$FixImpl or RenameConstructor$RenameConstructorFix into WorkingCopy and ElementOverlay. Done means the intermittent Check.checkFlags failures no longer occur in the affected CI tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- testing-qa
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100