detekt: Detekt parallel crash

Observed Behavior

Detekt crashes when executed in a project with multiple modules and enabled org.gradle.parallel with java.lang.ClassNotFoundException: kotlin.ExceptionsKt

The problem is reproducible with 100 percent probability. I found similar closed issue #2629

Detekt configuration
plugins {
  id("io.gitlab.arturbosch.detekt").version("1.15.0-RC1")
}

subprojects {

  apply { plugin("io.gitlab.arturbosch.detekt") }
  detekt {
      failFast = true
      buildUponDefaultConfig = true
      baseline = file("${rootProject.projectDir}/static_analysis/config/detekt/baseline.xml")
      config = files("${rootProject.projectDir}/static_analysis/config/detekt/config.yml")
      autoCorrect = true
      ignoreFailures = false
      parallel = true

      reports {
          html.enabled = true
          xml.enabled = true
          txt.enabled = true
      }
  }

  tasks {
      withType<io.gitlab.arturbosch.detekt.Detekt> {
          this.jvmTarget = "1.8"
          description = "Overrides current baseline."

          setSource(files(rootDir))
          include("**/*.kt")
          include("**/*.kts")
          exclude("**/resources/**")
          exclude("**/build/**")
      }
  }
}
Full stack trace

[2020-11-25 12:43:19.016616] FAILURE: Build failed with an exception. [2020-11-25 12:43:19.016624] [2020-11-25 12:43:19.016630] * What went wrong: [2020-11-25 12:43:19.016635] Execution failed for task ‘:core:detekt’. [2020-11-25 12:43:19.016640] > kotlin/ExceptionsKt [2020-11-25 12:43:19.016645] [2020-11-25 12:43:19.016650] * Try: [2020-11-25 12:43:19.016655] Run with --info or --debug option to get more log output. Run with --scan to get full insights. [2020-11-25 12:43:19.016660] [2020-11-25 12:43:19.016665] * Exception is: [2020-11-25 12:43:19.016670] org.gradle.api.tasks.TaskExecutionException: Execution failed for task ‘:core:detekt’. [2020-11-25 12:43:19.016675] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:208) [2020-11-25 12:43:19.016680] at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:263) [2020-11-25 12:43:19.016684] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:206) [2020-11-25 12:43:19.016689] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:187) [2020-11-25 12:43:19.016694] at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:114) [2020-11-25 12:43:19.016699] at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46) [2020-11-25 12:43:19.016704] at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62) [2020-11-25 12:43:19.016708] at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57) [2020-11-25 12:43:19.016713] at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56) [2020-11-25 12:43:19.016718] at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36) [2020-11-25 12:43:19.016723] at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77) [2020-11-25 12:43:19.016728] at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55) [2020-11-25 12:43:19.016732] at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52) [2020-11-25 12:43:19.016737] at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:409) [2020-11-25 12:43:19.016761] at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:399) [2020-11-25 12:43:19.016767] at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:157) [2020-11-25 12:43:19.016772] at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:242) [2020-11-25 12:43:19.016776] at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:150) [2020-11-25 12:43:19.016781] at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:94) [2020-11-25 12:43:19.016786] at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36) [2020-11-25 12:43:19.016791] at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52) [2020-11-25 12:43:19.016796] at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41) [2020-11-25 12:43:19.016801] at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:372) [2020-11-25 12:43:19.016805] at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:359) [2020-11-25 12:43:19.016810] at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:352) [2020-11-25 12:43:19.016815] at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:338) [2020-11-25 12:43:19.016820] at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127) [2020-11-25 12:43:19.016825] at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191) [2020-11-25 12:43:19.016829] at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182) [2020-11-25 12:43:19.016834] at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124) [2020-11-25 12:43:19.016839] at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) [2020-11-25 12:43:19.016843] at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48) [2020-11-25 12:43:19.016848] at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56) [2020-11-25 12:43:19.016853] Caused by: org.gradle.api.GradleException: kotlin/ExceptionsKt [2020-11-25 12:43:19.016858] at io.gitlab.arturbosch.detekt.invoke.DefaultCliInvoker.invokeCli(DetektInvoker.kt:63) [2020-11-25 12:43:19.016863] at io.gitlab.arturbosch.detekt.Detekt.check(Detekt.kt:208) [2020-11-25 12:43:19.016867] at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104) [2020-11-25 12:43:19.016872] at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58) [2020-11-25 12:43:19.016877] at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51) [2020-11-25 12:43:19.016882] at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29) [2020-11-25 12:43:19.016887] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.run(ExecuteActionsTaskExecuter.java:570) [2020-11-25 12:43:19.016892] at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:395) [2020-11-25 12:43:19.016896] at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:387) [2020-11-25 12:43:19.016906] at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:157) [2020-11-25 12:43:19.016912] at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:242) [2020-11-25 12:43:19.016916] at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:150) [2020-11-25 12:43:19.016921] at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:84) [2020-11-25 12:43:19.016926] at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31) [2020-11-25 12:43:19.016930] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:555) [2020-11-25 12:43:19.016935] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:538) [2020-11-25 12:43:19.016940] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$300(ExecuteActionsTaskExecuter.java:109) [2020-11-25 12:43:19.016945] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:279) [2020-11-25 12:43:19.016950] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:268) [2020-11-25 12:43:19.016955] at org.gradle.internal.execution.steps.ExecuteStep.lambda$execute$1(ExecuteStep.java:33) [2020-11-25 12:43:19.016959] at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:33) [2020-11-25 12:43:19.016964] at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:26) [2020-11-25 12:43:19.016969] at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:67) [2020-11-25 12:43:19.016973] at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:36) [2020-11-25 12:43:19.016978] at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:49) [2020-11-25 12:43:19.016983] at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:34) [2020-11-25 12:43:19.016988] at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:43) [2020-11-25 12:43:19.016992] at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:73) [2020-11-25 12:43:19.016997] at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:54) [2020-11-25 12:43:19.017002] at org.gradle.internal.execution.steps.CatchExceptionStep.execute(CatchExceptionStep.java:34) [2020-11-25 12:43:19.017007] at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:44) [2020-11-25 12:43:19.017011] at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:54) [2020-11-25 12:43:19.017016] at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:38) [2020-11-25 12:43:19.017021] at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:49) [2020-11-25 12:43:19.017026] at org.gradle.internal.execution.steps.CacheStep.executeWithoutCache(CacheStep.java:159) [2020-11-25 12:43:19.017030] at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:72) [2020-11-25 12:43:19.017037] at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:43) [2020-11-25 12:43:19.017171] at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:44) [2020-11-25 12:43:19.017181] at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:33) [2020-11-25 12:43:19.017192] at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:38) [2020-11-25 12:43:19.017197] at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:24) [2020-11-25 12:43:19.017202] at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:92) [2020-11-25 12:43:19.017207] at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:85) [2020-11-25 12:43:19.017212] at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:55) [2020-11-25 12:43:19.017217] at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:39) [2020-11-25 12:43:19.017222] at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:76) [2020-11-25 12:43:19.017227] at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:37) [2020-11-25 12:43:19.017231] at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:36) [2020-11-25 12:43:19.017236] at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:26) [2020-11-25 12:43:19.017241] at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:94) [2020-11-25 12:43:19.017246] at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:49) [2020-11-25 12:43:19.017251] at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:79) [2020-11-25 12:43:19.017256] at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:53) [2020-11-25 12:43:19.017261] at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:74) [2020-11-25 12:43:19.017265] at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:78) [2020-11-25 12:43:19.017270] at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:78) [2020-11-25 12:43:19.017275] at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:34) [2020-11-25 12:43:19.017280] at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:39) [2020-11-25 12:43:19.017285] at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:40) [2020-11-25 12:43:19.017289] at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:28) [2020-11-25 12:43:19.017294] at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33) [2020-11-25 12:43:19.017299] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:195) [2020-11-25 12:43:19.017304] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:187) [2020-11-25 12:43:19.017309] at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:114) [2020-11-25 12:43:19.017313] at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46) [2020-11-25 12:43:19.017318] at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62) [2020-11-25 12:43:19.017323] at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57) [2020-11-25 12:43:19.017328] at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56) [2020-11-25 12:43:19.017332] at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36) [2020-11-25 12:43:19.017342] at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77) [2020-11-25 12:43:19.017347] at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55) [2020-11-25 12:43:19.017352] at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52) [2020-11-25 12:43:19.017356] at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:409) [2020-11-25 12:43:19.017361] at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:399) [2020-11-25 12:43:19.017366] at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:157) [2020-11-25 12:43:19.017371] at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:242) [2020-11-25 12:43:19.017376] at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:150) [2020-11-25 12:43:19.017380] at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:94) [2020-11-25 12:43:19.017385] at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36) [2020-11-25 12:43:19.017390] at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52) [2020-11-25 12:43:19.017395] at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41) [2020-11-25 12:43:19.017399] at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:372) [2020-11-25 12:43:19.017404] at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:359) [2020-11-25 12:43:19.017409] at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:352) [2020-11-25 12:43:19.017414] at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:338) [2020-11-25 12:43:19.017418] at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127) [2020-11-25 12:43:19.017423] at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191) [2020-11-25 12:43:19.017428] at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182) [2020-11-25 12:43:19.017433] at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124) [2020-11-25 12:43:19.017437] at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) [2020-11-25 12:43:19.017442] at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48) [2020-11-25 12:43:19.017447] at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56) [2020-11-25 12:43:19.017452] Caused by: java.lang.NoClassDefFoundError: kotlin/ExceptionsKt [2020-11-25 12:43:19.017457] at kotlin.io.CloseableKt.closeFinally(Closeable.kt:62) [2020-11-25 12:43:19.017461] at io.gitlab.arturbosch.detekt.core.tooling.ProcessingSpecSettingsBridgeKt.withSettings(ProcessingSpecSettingsBridge.kt:24) [2020-11-25 12:43:19.017466] at io.gitlab.arturbosch.detekt.core.tooling.AnalysisFacade.runAnalysis$detekt_core(AnalysisFacade.kt:42) [2020-11-25 12:43:19.017471] at io.gitlab.arturbosch.detekt.core.tooling.AnalysisFacade.run(AnalysisFacade.kt:25) [2020-11-25 12:43:19.017476] at io.gitlab.arturbosch.detekt.cli.runners.Runner.call(Runner.kt:33) [2020-11-25 12:43:19.017485] at io.gitlab.arturbosch.detekt.cli.runners.Runner.execute(Runner.kt:23) [2020-11-25 12:43:19.017490] at io.gitlab.arturbosch.detekt.invoke.DefaultCliInvoker.invokeCli(DetektInvoker.kt:56) [2020-11-25 12:43:19.017495] … 91 more [2020-11-25 12:43:19.017499] Caused by: java.lang.ClassNotFoundException: kotlin.ExceptionsKt [2020-11-25 12:43:19.017504] … 98 more

Environment

  • Version of detekt used: 1.15.0-RC1 or 1.14.0
  • Version of Gradle used: 6.6.1 or 6.4.1
  • Version of Kotlin 1.4.10

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 29 (18 by maintainers)

Commits related to this issue

Most upvoted comments

So, I’ve finally found some spare time to look into this issue and I did a fair bit of digging. Not having a prior experience with detekt codebase and Gradle plugins was an interesting personal challenge 😉

The java.lang.ClassNotFoundException: kotlin/ExceptionsKt messages were very misleading, but by slowly debugging my way through the stack I’ve noticed that ExtensionFacade and EnvironmentFacade could not be properly initialized in ProcessingSettings and ended up in IllegalState. In that case, the message in stack trace in debugger was java.lang.ClassNotFoundException: org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment. Continuing with my efforts I’ve got a hunch that this might be a class loading issue. I’ve searched for it and stumbled upon DefaultClassLoaderCache.

I’ve removed the caching (created new class loader every time) and bingo! - project that was previously failing in parallel now worked, but ./gradlew clean detekt --no-daemon --no-build-cache --stacktrace took around 28s for a project with ~25 Gradle subprojects.

I’ve implemented a simpler caching mechanism involving ConcurrentHashMap which now holds class loaders for every set of class path files (in https://github.com/detekt/detekt/pull/3799) to make the detekt task faster again and ./gradlew clean detekt --no-daemon --no-build-cache --stacktrace on the same project now takes around 18s and involves just 2 different class loaders. This solution might however have some drawbacks, that I didn’t recognize, please let me know in the review, I’m looking forward to it.

I’m getting the error using:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':my-project:detekt'.
> kotlin/ExceptionsKt
  • Version of detekt used: 1.16.0-RC1
  • Version of Gradle used: 6.8.1
  • Version of Kotlin 1.4.20

For anyone in this thread, I am wondering which OS are you using when hitting the crash?

We’ve experienced the same issue on macOS Catalina, macOS BigSur and various Linux distros.

Observed Behavior Exactly the same problem (crash only on project with multiple modules and enabled org.gradle.parallel) but nto found classes vary on every run - like kotlin/jvm/internal/Intrinsics, kotlin/io/CloseableKt, kotlin.ExceptionsKt

Environment detekt: 1.14.2 kotlin: 1.4.20 gradle: 6.7

Mac Catalina 10.15.6

Mac Catalina 10.15.7

@AlinaRakhimova I rolled back to version 1.14.2. Everything works stably on this version.

Yes, I’m also using org.jlleitschuh.gradle:ktlint-gradle:9.4.1.

Any particular reason why you’re not using the io.gitlab.arturbosch.detekt:detekt-formatting plugin for detekt instead, which internally uses ktlint?