metaborg / nabl

Spoofax' Name Binding Language
Apache License 2.0
7 stars 12 forks source link

NPE in ApplyRelaxed.apply #93

Open Gohla opened 2 years ago

Gohla commented 2 years ago

Bug description

Sometimes, there is a NullPointerException at mb.statix.spec.ApplyRelaxed.apply(ApplyRelaxed.java:35) when running the Statix solver.

Versions

Spoofax version: Spoofax 3 development versions Statix setup: multi-file

Steps to reproduce the behavior

Unfortunately, this only happens sometimes, I have not been able to reproduce it deterministically. I've seen it happen on the buildfarm on pie.lang and on my laptop on sdf3 in Spoofax 3.

Observed behavior

NullPointerException is thrown.

Expected behavior

No exceptions are thrown.

Additional context

Stack trace from the buildfarm:

> Task :pie.lang.root:pie.lang.test:spoofaxBuild FAILED
Analysis failed unexpectedly
org.metaborg.core.analysis.AnalysisException: org.metaborg.core.MetaborgException: Invoking Stratego strategy editor-analyze failed unexpectedly
Stratego trace:
    editor_analyze_0_0
    stx_editor_analyze_2_3
    stx__editor_analyze_2_3
    with_1_1
    stx__solve_multi_file_0_5
Exception during evaluation: null
    at org.metaborg.spoofax.core.analysis.constraint.AbstractConstraintAnalyzer.callAnalysis(AbstractConstraintAnalyzer.java:320)
    at org.metaborg.spoofax.core.analysis.constraint.AbstractConstraintAnalyzer.doAnalysis(AbstractConstraintAnalyzer.java:186)
    at org.metaborg.spoofax.core.analysis.constraint.AbstractConstraintAnalyzer.analyzeAll(AbstractConstraintAnalyzer.java:153)
    at org.metaborg.spoofax.core.analysis.constraint.AbstractConstraintAnalyzer.analyzeAll(AbstractConstraintAnalyzer.java:1)
    at org.metaborg.core.analysis.AnalysisService.analyzeAll(AnalysisService.java:43)
    at org.metaborg.spoofax.core.analysis.SpoofaxAnalysisService.analyzeAll(SpoofaxAnalysisService.java:25)
    at org.metaborg.spoofax.core.analysis.SpoofaxAnalysisService.analyzeAll(SpoofaxAnalysisService.java:1)
    at org.metaborg.core.build.Builder.analyze(Builder.java:402)
    at org.metaborg.core.build.Builder.updateLanguageResources(Builder.java:272)
    at org.metaborg.core.build.Builder.build(Builder.java:167)
    at org.metaborg.spoofax.core.build.SpoofaxBuilder.build(SpoofaxBuilder.java:48)
    at org.metaborg.spoofax.core.build.SpoofaxBuilder.build(SpoofaxBuilder.java:1)
    at org.metaborg.core.build.IBuilder.build(IBuilder.java:55)
    at org.metaborg.spoofax.core.build.SpoofaxBuilder.build(SpoofaxBuilder.java:52)
    at mb.spoofax.gradle.task.SpoofaxBuildTask.execute(SpoofaxBuildTask.kt:86)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:494)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
    at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:479)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:462)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$400(ExecuteActionsTaskExecuter.java:105)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:273)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:251)
    at org.gradle.internal.execution.steps.ExecuteStep.lambda$executeOperation$1(ExecuteStep.java:66)
    at java.base/java.util.Optional.orElseGet(Optional.java:369)
    at org.gradle.internal.execution.steps.ExecuteStep.executeOperation(ExecuteStep.java:66)
    at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:34)
    at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:47)
    at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:44)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
    at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
    at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:44)
    at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:34)
    at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:72)
    at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:42)
    at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:53)
    at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:39)
    at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:44)
    at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:77)
    at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:58)
    at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:54)
    at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:32)
    at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:57)
    at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:38)
    at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:63)
    at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:30)
    at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:176)
    at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:76)
    at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:47)
    at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:43)
    at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:32)
    at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:39)
    at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:25)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:102)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:95)
    at java.base/java.util.Optional.map(Optional.java:265)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:55)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:39)
    at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:83)
    at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:44)
    at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
    at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
    at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:96)
    at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:52)
    at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:83)
    at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:54)
    at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:74)
    at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:88)
    at java.base/java.util.Optional.orElseGet(Optional.java:369)
    at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:88)
    at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:34)
    at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
    at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:46)
    at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:34)
    at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:43)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution$3.withWorkspace(ExecuteActionsTaskExecuter.java:286)
    at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:43)
    at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:33)
    at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:40)
    at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:30)
    at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:54)
    at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:40)
    at org.gradle.internal.execution.impl.DefaultExecutionEngine.execute(DefaultExecutionEngine.java:41)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:183)
    at java.base/java.util.Optional.orElseGet(Optional.java:369)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:183)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:173)
    at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
    at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
    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:200)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
    at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
    at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:411)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:398)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:391)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:377)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
    at org.gradle.execution.plan.DefaultPlanExecutor.process(DefaultPlanExecutor.java:72)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.executeWithServices(DefaultTaskExecutionGraph.java:196)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.execute(DefaultTaskExecutionGraph.java:189)
    at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:39)
    at org.gradle.execution.DefaultBuildWorkExecutor.execute(DefaultBuildWorkExecutor.java:40)
    at org.gradle.execution.DefaultBuildWorkExecutor.access$000(DefaultBuildWorkExecutor.java:24)
    at org.gradle.execution.DefaultBuildWorkExecutor$1.proceed(DefaultBuildWorkExecutor.java:48)
    at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:49)
    at org.gradle.execution.DefaultBuildWorkExecutor.execute(DefaultBuildWorkExecutor.java:40)
    at org.gradle.execution.DefaultBuildWorkExecutor.execute(DefaultBuildWorkExecutor.java:33)
    at org.gradle.execution.IncludedBuildLifecycleBuildWorkExecutor.execute(IncludedBuildLifecycleBuildWorkExecutor.java:36)
    at org.gradle.execution.DeprecateUndefinedBuildWorkExecutor.execute(DeprecateUndefinedBuildWorkExecutor.java:44)
    at org.gradle.execution.BuildOperationFiringBuildWorkerExecutor$ExecuteTasks.run(BuildOperationFiringBuildWorkerExecutor.java:57)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
    at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
    at org.gradle.execution.BuildOperationFiringBuildWorkerExecutor.execute(BuildOperationFiringBuildWorkerExecutor.java:42)
    at org.gradle.initialization.DefaultGradleLauncher.runWork(DefaultGradleLauncher.java:260)
    at org.gradle.initialization.DefaultGradleLauncher.doClassicBuildStages(DefaultGradleLauncher.java:172)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:148)
    at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:124)
    at org.gradle.internal.work.DefaultWorkerLeaseService.withSharedLease(DefaultWorkerLeaseService.java:109)
    at org.gradle.composite.internal.DefaultIncludedBuild.execute(DefaultIncludedBuild.java:196)
    at org.gradle.composite.internal.DefaultIncludedBuildController.doBuild(DefaultIncludedBuildController.java:220)
    at org.gradle.composite.internal.DefaultIncludedBuildController.run(DefaultIncludedBuildController.java:113)
    at org.gradle.composite.internal.DefaultIncludedBuildControllers$BuildOpRunnable.run(DefaultIncludedBuildControllers.java:129)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: org.metaborg.core.MetaborgException: Invoking Stratego strategy editor-analyze failed unexpectedly
Stratego trace:
    editor_analyze_0_0
    stx_editor_analyze_2_3
    stx__editor_analyze_2_3
    with_1_1
    stx__solve_multi_file_0_5
Exception during evaluation: null
    at org.metaborg.spoofax.core.stratego.StrategoCommon.handleException(StrategoCommon.java:223)
    at org.metaborg.spoofax.core.stratego.StrategoCommon.invoke(StrategoCommon.java:154)
    at org.metaborg.spoofax.core.analysis.constraint.AbstractConstraintAnalyzer.callAnalysis(AbstractConstraintAnalyzer.java:318)
    ... 180 more
Caused by: org.spoofax.interpreter.core.InterpreterException: Exception during evaluation: null
    at org.spoofax.interpreter.core.Interpreter.evaluate(Interpreter.java:113)
    at org.spoofax.interpreter.core.Interpreter.invoke(Interpreter.java:80)
    at org.strategoxt.HybridInterpreter.invoke(HybridInterpreter.java:457)
    at org.metaborg.spoofax.core.stratego.StrategoCommon.invoke(StrategoCommon.java:148)
    ... 181 more
Caused by: java.lang.NullPointerException
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at java.base/java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:603)
    at java.base/java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:678)
    at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:737)
    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateParallel(ReduceOps.java:919)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
    at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
    at mb.statix.spoofax.STX_solve_multi_file.call(STX_solve_multi_file.java:62)
    at mb.statix.spoofax.StatixPrimitive.call(StatixPrimitive.java:84)
    at mb.statix.spoofax.StatixPrimitive.call(StatixPrimitive.java:69)
    at org.spoofax.interpreter.stratego.PrimT.eval(PrimT.java:61)
    at org.spoofax.interpreter.stratego.Strategy.evaluate(Strategy.java:86)
    at org.spoofax.interpreter.stratego.SDefT.evaluate(SDefT.java:213)
    at org.strategoxt.lang.InteropStrategy.invokeDynamic(InteropStrategy.java:57)
    at org.strategoxt.lang.DynamicStrategy.invoke(DynamicStrategy.java:22)
    at org.strategoxt.stratego_lib.with_1_1.invoke(with_1_1.java:31)
    at org.strategoxt.lang.Strategy.invokeDynamic(Strategy.java:44)
    at org.strategoxt.lang.InteropSDefT.evaluate(InteropSDefT.java:192)
    at org.strategoxt.lang.InteropSDefT.evaluate(InteropSDefT.java:183)
    at org.strategoxt.lang.InteropSDefT$StrategyBody.evaluate(InteropSDefT.java:245)
    at org.strategoxt.lang.InteropSDefT$StrategyBody.eval(InteropSDefT.java:238)
    at org.spoofax.interpreter.stratego.Strategy.evaluate(Strategy.java:86)
    at org.spoofax.interpreter.core.Interpreter.evaluate(Interpreter.java:105)
    ... 184 more
Caused by: java.lang.NullPointerException
    at mb.statix.spec.ApplyRelaxed.apply(ApplyRelaxed.java:35)
    at mb.statix.spec.RuleUtil.apply(RuleUtil.java:154)
    at mb.statix.spec.RuleUtil.applyOrdered(RuleUtil.java:121)
    at mb.statix.spec.RuleUtil.applyOrderedOne(RuleUtil.java:78)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:655)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
    at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:408)
    at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:1)
    at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:672)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
    at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:408)
    at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:1)
    at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:672)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
    at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:408)
    at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:1)
    at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:408)
    at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:1)
    at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:672)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
    at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:408)
    at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:1)
    at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:672)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
    at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:408)
    at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:1)
    at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:408)
    at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:1)
    at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:672)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
    at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:408)
    at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:1)
    at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseConj(GreedySolver.java:354)
    at mb.statix.solver.persistent.GreedySolver$1.caseConj(GreedySolver.java:1)
    at mb.statix.constraints.CConj.matchOrThrow(CConj.java:59)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:672)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
    at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:408)
    at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:1)
    at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:672)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
    at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:672)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
    at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseConj(GreedySolver.java:354)
    at mb.statix.solver.persistent.GreedySolver$1.caseConj(GreedySolver.java:1)
    at mb.statix.constraints.CConj.matchOrThrow(CConj.java:59)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:672)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
    at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:408)
    at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:1)
    at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
    at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:672)
    at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
    at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
    at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
    at mb.statix.solver.persistent.GreedySolver.solve(GreedySolver.java:180)
    at mb.statix.solver.persistent.Solver.solve(Solver.java:63)
    at mb.statix.spoofax.STX_solve_multi_file.solveConstraint(STX_solve_multi_file.java:75)
    at mb.statix.spoofax.STX_solve_multi_file.lambda$3(STX_solve_multi_file.java:56)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:952)
    at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:926)
    at java.base/java.util.stream.AbstractTask.compute(AbstractTask.java:327)
    at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:746)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

Stack trace from my laptop:

> Task :spoofax3.lwb.root:sdf3:test

AnalyzerTest > analyzeMultipleSuccess() FAILED
    mb.constraint.common.ConstraintAnalyzerExceptions$StrategoInvokeFail: Constraint analyzer failed unexpectedly due to failure in Stratego execution

        Caused by:
        mb.stratego.common.StrategoExceptions$ExceptionalFail: Invoking Stratego strategy 'statix-editor-analyze' failed exceptionally
        Stratego stack trace:
            stx__solve_multi_file_0_5
            with_1_1
            stx__editor_analyze_2_3
            stx_editor_analyze_2_3
            statix_editor_analyze_0_0
        Stratego input term:
        AnalyzeMulti(
          ("java##jimfs://24c6350c-2fbe-4694-9b2e-7fad133810f5/", Added((){TermIndex("java##jimfs://24c6350c-2fbe-4694-9b2e-7fad133810f5/", 0)}))
        , [ ( "java##jimfs://24c6350c-2fbe-4694-9b2e-7fad133810f5/b.sdf3"
            , Added(
                Module(
                  Unparameterized("b")
                , [Imports([Module(Unparameterized("a"))])]
                , [ SDFSection(CfSorts(["B"]))
                  , SDFSection(
                      ContextFreeSyntax(
                        [SdfProduction(SortDef("B"), Rhs([Sort("A")]), NoAttrs())]
                      )
                    )
                  ]
                )
              )
            )
          , ( "java##jimfs://24c6350c-2fbe-4694-9b2e-7fad133810f5/a.sdf3"
            , Added(
                Module(
                  Unparameterized("a")
                , []
                , [ SDFSection(CfSorts(["A"]))
                  , SDFSection(
                      ContextFreeSyntax(
                        [ SdfProductionWithCons(
                            SortCons(SortDef("A"), Constructor("A"))
                          , Rhs([Lit("\"A\"")])
                          , NoAttrs()
                          )
                        ]
                      )
                    )
                  ]
                )
              )
            )
          , ( "java##jimfs://24c6350c-2fbe-4694-9b2e-7fad133810f5/c.sdf3"
            , Added(
                Module(
                  Unparameterized("c")
                , [Imports([Module(Unparameterized("a")), Module(Unparameterized("b"))])]
                , [ SDFSection(CfSorts(["C"]))
                  , SDFSection(
                      ContextFreeSyntax(
                        [SdfProduction(SortDef("C"), Rhs([Sort("A")]), NoAttrs())]
                      )
                    )
                  , SDFSection(
                      ContextFreeSyntax(
                        [SdfProduction(SortDef("C"), Rhs([Sort("B")]), NoAttrs())]
                      )
                    )
                  ]
                )
              )
            )
          ]
        , ()
        , BLOB_ThreadCancel()()
        )

            Caused by:
            org.spoofax.interpreter.core.InterpreterException: Exception during evaluation: null
                at org.spoofax.interpreter.core.Interpreter.evaluate(Interpreter.java:113)
                at org.spoofax.interpreter.core.Interpreter.invoke(Interpreter.java:80)
                at org.strategoxt.HybridInterpreter.invoke(HybridInterpreter.java:458)
                at mb.stratego.common.StrategoRuntime.invokeOrNull(StrategoRuntime.java:169)
                at mb.stratego.common.StrategoRuntime.invokeOrNull(StrategoRuntime.java:147)
                at mb.stratego.common.StrategoRuntime.invoke(StrategoRuntime.java:56)
                at mb.constraint.common.ConstraintAnalyzer.doAnalyze(ConstraintAnalyzer.java:383)
                at mb.constraint.common.ConstraintAnalyzer.analyze(ConstraintAnalyzer.java:285)
                at mb.spoofax.test.SingleBaseLanguageTestBase.analyze(SingleBaseLanguageTestBase.java:161)
                at mb.sdf3.language.AnalyzerTest.analyzeMultipleSuccess(AnalyzerTest.java:86)

                Caused by:
                java.lang.NullPointerException
                    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
                    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
                    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
                    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
                    at java.base/java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:603)
                    at java.base/java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:678)
                    at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:737)
                    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateParallel(ReduceOps.java:919)
                    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
                    at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
                    at mb.statix.spoofax.STX_solve_multi_file.call(STX_solve_multi_file.java:62)
                    at mb.statix.spoofax.StatixPrimitive.call(StatixPrimitive.java:91)
                    at mb.statix.spoofax.StatixPrimitive.call(StatixPrimitive.java:76)
                    at org.spoofax.interpreter.stratego.PrimT.eval(PrimT.java:61)
                    at org.spoofax.interpreter.stratego.Strategy.evaluate(Strategy.java:86)
                    at org.spoofax.interpreter.stratego.SDefT.evaluate(SDefT.java:213)
                    at org.strategoxt.lang.InteropStrategy.invokeDynamic(InteropStrategy.java:57)
                    at org.strategoxt.lang.DynamicStrategy.invoke(DynamicStrategy.java:22)
                    at org.strategoxt.stratego_lib.with_1_1.invoke(with_1_1.java:31)
                    at org.strategoxt.lang.Strategy.invokeDynamic(Strategy.java:44)
                    at org.strategoxt.lang.InteropSDefT.evaluate(InteropSDefT.java:192)
                    at org.strategoxt.lang.InteropSDefT.evaluate(InteropSDefT.java:183)
                    at org.strategoxt.lang.InteropSDefT$StrategyBody.evaluate(InteropSDefT.java:245)
                    at org.strategoxt.lang.InteropSDefT$StrategyBody.eval(InteropSDefT.java:238)
                    at org.spoofax.interpreter.stratego.Strategy.evaluate(Strategy.java:86)
                    at org.spoofax.interpreter.core.Interpreter.evaluate(Interpreter.java:105)
                    ... 9 more

                    Caused by:
                    java.lang.NullPointerException
                        at mb.statix.spec.ApplyRelaxed.apply(ApplyRelaxed.java:35)
                        at mb.statix.spec.RuleUtil.apply(RuleUtil.java:157)
                        at mb.statix.spec.RuleUtil.applyOrdered(RuleUtil.java:124)
                        at mb.statix.spec.RuleUtil.applyOrderedOne(RuleUtil.java:81)
                        at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:664)
                        at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:323)
                        at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
                        at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:323)
                        at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:258)
                        at mb.statix.solver.persistent.GreedySolver.access$400(GreedySolver.java:94)
                        at mb.statix.solver.persistent.GreedySolver$1.caseConj(GreedySolver.java:356)
                        at mb.statix.solver.persistent.GreedySolver$1.caseConj(GreedySolver.java:323)
                        at mb.statix.constraints.CConj.matchOrThrow(CConj.java:59)
                        at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:323)
                        at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:258)
                        at mb.statix.solver.persistent.GreedySolver.access$400(GreedySolver.java:94)
                        at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:681)
                        at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:323)
                        at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
                        at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:323)
                        at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:258)
                        at mb.statix.solver.persistent.GreedySolver.access$400(GreedySolver.java:94)
                        at mb.statix.solver.persistent.GreedySolver$1.caseConj(GreedySolver.java:356)
                        at mb.statix.solver.persistent.GreedySolver$1.caseConj(GreedySolver.java:323)
                        at mb.statix.constraints.CConj.matchOrThrow(CConj.java:59)
                        at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:323)
                        at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:258)
                        at mb.statix.solver.persistent.GreedySolver.access$400(GreedySolver.java:94)
                        at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:681)
                        at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:323)
                        at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
                        at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:323)
                        at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:258)
                        at mb.statix.solver.persistent.GreedySolver.access$400(GreedySolver.java:94)
                        at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:410)
                        at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:323)
                        at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
                        at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:323)
                        at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:258)
                        at mb.statix.solver.persistent.GreedySolver.access$400(GreedySolver.java:94)
                        at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:681)
                        at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:323)
                        at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
                        at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:323)
                        at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:258)
                        at mb.statix.solver.persistent.GreedySolver.access$400(GreedySolver.java:94)
                        at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:681)
                        at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:323)
                        at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
                        at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:323)
                        at mb.statix.solver.persistent.GreedySolver.solve(GreedySolver.java:181)
                        at mb.statix.solver.persistent.Solver.solve(Solver.java:63)
                        at mb.statix.spoofax.STX_solve_multi_file.solveConstraint(STX_solve_multi_file.java:75)
                        at mb.statix.spoofax.STX_solve_multi_file.lambda$call$3(STX_solve_multi_file.java:56)
                        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
                        at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
                        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
                        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
                        at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:952)
                        at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:926)
                        at java.base/java.util.stream.AbstractTask.compute(AbstractTask.java:327)
                        at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:746)
                        at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
                        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
                        at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
                        at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
                        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
AZWN commented 2 years ago

I was trying to reproduce this, but unfortunately the Spoofax 3 build failed. See Slack for details. Can you comment when that is resolved? Then I'll try to reproduce and fix it.

AZWN commented 1 year ago

Perhaps fixed by https://github.com/metaborg/nabl/commit/6b822e07be4bc1199c912cf133aa71fbde239ca5 and https://github.com/metaborg/nabl/commit/5d15c13c8ea0ef4502d191bf27cd26fcbed3532e