Skip to content

GroovyLangParser has frequent NullPointerExceptions when parsing concurrently #462

@RBusarow

Description

@RBusarow

This stacktrace shows an exception while parsing ~190 build.gradle (in Groovy) files for the SortDependenciesRule.

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':moduleCheckSortDependenciesAuto'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:147)
        at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:145)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:133)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:333)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:320)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:313)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:299)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:143)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:227)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:218)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:140)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
Caused by: java.lang.NullPointerException
        at groovyjarjarantlr4.v4.runtime.atn.ParserATNSimulator.adaptivePredict(ParserATNSimulator.java:367)
        at groovyjarjarantlr4.v4.runtime.atn.ParserATNSimulator.adaptivePredict(ParserATNSimulator.java:357)
        at org.apache.groovy.parser.antlr4.GroovyParser.firstArgumentListElement(GroovyParser.java:11998)
        at org.apache.groovy.parser.antlr4.GroovyParser.argumentList(GroovyParser.java:11843)
        at org.apache.groovy.parser.antlr4.GroovyParser.commandExpression(GroovyParser.java:9308)
        at org.apache.groovy.parser.antlr4.GroovyParser.statementExpression(GroovyParser.java:8067)
        at org.apache.groovy.parser.antlr4.GroovyParser.statement(GroovyParser.java:6915)
        at org.apache.groovy.parser.antlr4.GroovyParser.blockStatement(GroovyParser.java:5555)
        at org.apache.groovy.parser.antlr4.GroovyParser.blockStatements(GroovyParser.java:4866)
        at org.apache.groovy.parser.antlr4.GroovyParser.blockStatementsOpt(GroovyParser.java:4805)
        at org.apache.groovy.parser.antlr4.GroovyParser.closure(GroovyParser.java:4706)
        at org.apache.groovy.parser.antlr4.GroovyParser.closureOrLambdaExpression(GroovyParser.java:4752)
        at org.apache.groovy.parser.antlr4.GroovyParser.pathElement(GroovyParser.java:9717)
        at org.apache.groovy.parser.antlr4.GroovyParser.pathExpression(GroovyParser.java:9487)
        at org.apache.groovy.parser.antlr4.GroovyParser.postfixExpression(GroovyParser.java:8108)
        at org.apache.groovy.parser.antlr4.GroovyParser.expression(GroovyParser.java:8650)
        at org.apache.groovy.parser.antlr4.GroovyParser.commandExpression(GroovyParser.java:9299)
        at org.apache.groovy.parser.antlr4.GroovyParser.statementExpression(GroovyParser.java:8067)
        at org.apache.groovy.parser.antlr4.GroovyParser.statement(GroovyParser.java:6915)
        at org.apache.groovy.parser.antlr4.GroovyParser.scriptStatement(GroovyParser.java:514)
        at org.apache.groovy.parser.antlr4.GroovyParser.scriptStatements(GroovyParser.java:421)
        at org.apache.groovy.parser.antlr4.GroovyParser.compilationUnit(GroovyParser.java:357)
        at modulecheck.parsing.groovy.antlr.GroovyParsingScope.<init>(GroovyParsingScope.kt:36)
        at modulecheck.parsing.groovy.antlr.GroovyParsingScopeKt$parse$1.invokeSuspend(GroovyParsingScope.kt:52)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:279)
        at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
        at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
        at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
        at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
        at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
        at modulecheck.parsing.groovy.antlr.GroovyParsingScopeKt.parse(GroovyParsingScope.kt:50)
        at modulecheck.parsing.groovy.antlr.GroovyDependencyBlockParser.parse(GroovyDependencyBlockParser.kt:37)
        at modulecheck.parsing.wiring.RealDependenciesBlocksProvider.get(RealDependenciesBlocksProvider.kt:40)
        at modulecheck.project.BuildFileParser.dependenciesBlocks(BuildFileParser.kt:53)
        at modulecheck.core.rule.SortDependenciesRule.check(SortDependenciesRule.kt:50)
        at modulecheck.core.rule.SingleRuleFindingFactory$evaluateRule$2$1$1.invokeSuspend(SingleRuleFindingFactory.kt:53)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:39)
        at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions