Skip to content

Broken android build #57084

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
cyberpwnn opened this issue Nov 11, 2024 · 8 comments
Closed

Broken android build #57084

cyberpwnn opened this issue Nov 11, 2024 · 8 comments
Labels
area-vm Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends. legacy-area-front-end Legacy: Use area-dart-model instead.

Comments

@cyberpwnn
Copy link

Flutter 3.24.4 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 603104015d (3 weeks ago) • 2024-10-24 08:01:25 -0700
Engine • revision db49896cf2
Tools • Dart 3.5.4 • DevTools 2.37.3
build_runner 2.4.13
|-- frontend_server_client 4.0.0 (trans)

[+19003 ms] [+20522 ms] Unhandled exception:
[   +1 ms]             Null check operator used on a null value
[        ]             #0      SummaryCollector.visitFunctionExpression (package:vm/transformations/type_flow/summary_collector.dart:1763)
[        ]             dart-lang/webdev#1      FunctionExpression.accept (package:kernel/ast.dart:8588)
[        ]             dart-lang/webdev#2      SummaryCollector._visit (package:vm/transformations/type_flow/summary_collector.dart:975)
[        ]             dart-lang/webdev#3      SummaryCollector._visitArguments (package:vm/transformations/type_flow/summary_collector.dart:1001)
[        ]             dart-lang/webdev#4      SummaryCollector.visitConstructorInvocation (package:vm/transformations/type_flow/summary_collector.dart:1756)
[        ]             dart-lang/webdev#5      ConstructorInvocation.accept (package:kernel/ast.dart:6666)
[        ]             dart-lang/webdev#6      SummaryCollector._visit (package:vm/transformations/type_flow/summary_collector.dart:975)
[        ]             dart-lang/webdev#7      SummaryCollector._visitArguments (package:vm/transformations/type_flow/summary_collector.dart:1001)
[        ]             dart-lang/webdev#8      SummaryCollector.visitConstructorInvocation (package:vm/transformations/type_flow/summary_collector.dart:1756)
[        ]             dart-lang/webdev#9      ConstructorInvocation.accept (package:kernel/ast.dart:6666)
[        ]             dart-lang/webdev#10     SummaryCollector._visit (package:vm/transformations/type_flow/summary_collector.dart:975)
[        ]             dart-lang/webdev#11     SummaryCollector.visitReturnStatement (package:vm/transformations/type_flow/summary_collector.dart:2430)
[        ]             dart-lang/webdev#12     ReturnStatement.accept (package:kernel/ast.dart:10140)
[        ]             dart-lang/webdev#13     SummaryCollector._visitWithoutResult (package:vm/transformations/type_flow/summary_collector.dart:978)
[        ]             dart-lang/webdev#14     List.forEach (dart:core-patch/growable_array.dart:417)
[        ]             dart-lang/webdev#15     SummaryCollector.visitBlock (package:vm/transformations/type_flow/summary_collector.dart:2273)
[        ]             dart-lang/webdev#16     Block.accept (package:kernel/ast.dart:9181)
[        ]             dart-lang/webdev#17     SummaryCollector._visitWithoutResult (package:vm/transformations/type_flow/summary_collector.dart:978)
[        ]             dart-lang/webdev#18     SummaryCollector.createSummary (package:vm/transformations/type_flow/summary_collector.dart:838)
[        ]             dart-lang/webdev#19     TypeFlowAnalysis.getSummary (package:vm/transformations/type_flow/analysis.dart:1912)
[        ]             dart-lang/webdev#20     _DirectInvocation._processFunction (package:vm/transformations/type_flow/analysis.dart:399)
[        ]             dart-lang/webdev#21     _DirectInvocation.process (package:vm/transformations/type_flow/analysis.dart:288)
[        ]             dart-lang/webdev#22     _WorkList.processInvocation (package:vm/transformations/type_flow/analysis.dart:1793)
[        ]             dart-lang/webdev#23     _WorkList.process (package:vm/transformations/type_flow/analysis.dart:1736)
[        ]             dart-lang/webdev#24     TypeFlowAnalysis.process (package:vm/transformations/type_flow/analysis.dart:1941)
[        ]             dart-lang/webdev#25     transformComponent (package:vm/transformations/type_flow/transformer.dart:123)
[        ]             dart-lang/webdev#26     runGlobalTransformations (package:vm/kernel_front_end.dart:632)
[        ]             dart-lang/webdev#27     compileToKernel (package:vm/kernel_front_end.dart:544)
[        ]             <asynchronous suspension>
[        ]             dart-lang/webdev#28     FrontendCompiler.compile (package:frontend_server/frontend_server.dart:660)
[        ]             <asynchronous suspension>
[        ]             dart-lang/webdev#29     starter (package:frontend_server/starter.dart:109)
[        ]             <asynchronous suspension>
[        ]             dart-lang/webdev#30     main (file:///C:/b/s/w/ir/x/w/sdk/pkg/frontend_server/bin/frontend_server_starter.dart:13)
[        ]             <asynchronous suspension>
[  +82 ms] [  +86 ms] Persisting file store
[        ] [   +1 ms] Done persisting file store
[        ] [   +1 ms] Target kernel_snapshot_program failed: Exception
[        ]            #0      KernelSnapshotProgram.build (package:flutter_tools/src/build_system/targets/common.dart:276:7)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#1      _BuildInstance._invokeInternal (package:flutter_tools/src/build_system/build_system.dart:875:9)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#2      Future.wait.<anonymous closure> (dart:async/future.dart:534:21)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#3      _BuildInstance.invokeTarget (package:flutter_tools/src/build_system/build_system.dart:813:32)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#4      Future.wait.<anonymous closure> (dart:async/future.dart:534:21)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#5      _BuildInstance.invokeTarget (package:flutter_tools/src/build_system/build_system.dart:813:32)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#6      Future.wait.<anonymous closure> (dart:async/future.dart:534:21)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#7      _BuildInstance.invokeTarget (package:flutter_tools/src/build_system/build_system.dart:813:32)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#8      Future.wait.<anonymous closure> (dart:async/future.dart:534:21)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#9      _BuildInstance.invokeTarget (package:flutter_tools/src/build_system/build_system.dart:813:32)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#10     Future.wait.<anonymous closure> (dart:async/future.dart:534:21)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#11     _BuildInstance.invokeTarget (package:flutter_tools/src/build_system/build_system.dart:813:32)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#12     Future.wait.<anonymous closure> (dart:async/future.dart:534:21)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#13     _BuildInstance.invokeTarget (package:flutter_tools/src/build_system/build_system.dart:813:32)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#14     FlutterBuildSystem.build (package:flutter_tools/src/build_system/build_system.dart:635:16)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#15     AssembleCommand.runCommand (package:flutter_tools/src/commands/assemble.dart:328:32)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#16     FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1408:27)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#17     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#18     CommandRunner.runCommand (package:args/command_runner.dart:212:13)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#19     FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:420:9)
[        ]            <asynchronous suspension>
[ +180 ms]            dart-lang/webdev#20     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#21     FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:364:5)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#22     run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:130:9)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#23     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#24     main (package:flutter_tools/executable.dart:93:3)
[        ]            <asynchronous suspension>
[        ] [  +31 ms] 
[        ]            #0      throwToolExit (package:flutter_tools/src/base/common.dart:10:3)
[        ]            dart-lang/webdev#1      AssembleCommand.runCommand (package:flutter_tools/src/commands/assemble.dart:345:7)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#2      FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1408:27)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#3      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#4      CommandRunner.runCommand (package:args/command_runner.dart:212:13)
[        ]            <asynchronous suspension>
[        ] [   +7 ms] "flutter assemble" took 20,843ms.
[        ] [  +82 ms] ensureAnalyticsSent: 80ms
[        ] [        ] Running 1 shutdown hook
[        ] [        ] Shutdown hooks complete
[        ] [   +1 ms] exiting with code 1
[        ] Invalidating in-memory cache of xxxxxx
[        ] > Task :app:compileFlutterBuildRelease FAILED
[        ]            dart-lang/webdev#5      FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:420:9)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#6      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#7      FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:364:5)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#8      run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:130:9)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#9      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
[        ]            <asynchronous suspension>
[        ]            dart-lang/webdev#10     main (package:flutter_tools/executable.dart:93:3)
[        ]            <asynchronous suspension>
[        ] FAILURE: Build failed with an exception.
[        ] * What went wrong:
[ +119 ms] Execution failed for task ':app:compileFlutterBuildRelease'.
[        ] > Process 'command 'C:\Users\no\fvm\default\bin\flutter.bat'' finished with non-zero exit value 1
[        ] * Try:
[        ] > Run with --debug option to get more log output.
[        ] > Run with --scan to get full insights.
[        ] * Exception is:
[        ] org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:compileFlutterBuildRelease'.
[        ]      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:142)
[        ]      at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282)
[        ]      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:140)
[        ]      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:128)
[        ]      at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
[        ] :app:compileFlutterBuildRelease (Thread[Execution worker Thread 29,5,main]) completed. Took 21.211 secs.
[        ]      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:69)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:327)
[  +88 ms]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:314)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:307)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:293)
[        ]      at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:417)
[        ]      at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:339)
[        ]      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:1136)
[        ]      at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[        ]      at java.base/java.lang.Thread.run(Thread.java:840)
[        ] Caused by: org.gradle.process.internal.ExecException: Process 'command 'C:\Users\nope\fvm\default\bin\flutter.bat'' finished with non-zero exit value 1
[        ]      at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:415)
[        ]      at org.gradle.process.internal.DefaultExecAction.execute(DefaultExecAction.java:38)
[        ]      at org.gradle.process.internal.DefaultExecActionFactory.exec(DefaultExecActionFactory.java:202)
[        ]      at org.gradle.api.internal.project.DefaultProject.exec(DefaultProject.java:1171)
[        ]      at org.gradle.api.internal.project.DefaultProject.exec(DefaultProject.java:1166)
[        ]      at org.gradle.api.Project$exec$10.call(Unknown Source)
[        ]      at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
[        ]      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
[        ]      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139)
[        ]      at org.gradle.internal.classpath.Instrumented$ExecCallSite.call(Instrumented.java:740)
[        ]      at BaseFlutterTask.buildBundle(flutter.groovy:1687)
[        ]      at BaseFlutterTask$buildBundle.callCurrent(Unknown Source)
[        ]      at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)
[        ]      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171)
[        ]      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:176)
[        ]      at FlutterTask.build(flutter.groovy:1825)
[        ]      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 java.base/java.lang.reflect.Method.invoke(Method.java:568)
[        ]      at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125)
[        ]      at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)
[        ]      at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
[   +5 ms]      at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
[        ]      at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:236)
[        ]      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$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.run(DefaultBuildOperationRunner.java:47)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
[        ]      at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:221)
[        ]      at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:204)
[        ]      at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:187)
[        ]      at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:165)
[        ]      at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:89)
[        ]      at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:40)
[        ]      at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:53)
[        ]      at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:50)
[        ]      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.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:50)
[        ]      at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:40)
[        ]      at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68)
[        ]      at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38)
[        ]      at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
[ +131 ms]      at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
[        ]      at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
[        ]      at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
[        ]      at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:29)
[        ]      at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.executeDelegateBroadcastingChanges(CaptureStateAfterExecutionStep.java:124)
[        ]      at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:80)
[        ]      at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:58)
[        ]      at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48)
[        ]      at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:36)
[        ]      at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:181)
[        ]      at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$1(BuildCacheStep.java:71)
[        ]      at org.gradle.internal.Either$Right.fold(Either.java:175)
[        ]      at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:59)
[        ]      at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:69)
[        ]      at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:47)
[        ]      at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:36)
[        ]      at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:25)
[        ]      at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)
[        ]      at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)
[        ]      at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:110)
[        ]      at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:56)
[        ]      at java.base/java.util.Optional.orElseGet(Optional.java:364)
[        ]      at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:56)
[        ]      at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38)
[        ]      at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:73)
[        ]      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:89)
[        ]      at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:50)
[        ]      at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:114)
[        ]      at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:57)
[        ]      at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:76)
[        ]      at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:50)
[        ]      at org.gradle.internal.execution.steps.SkipEmptyWorkStep.executeWithNoEmptySources(SkipEmptyWorkStep.java:254)
[        ]      at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:91)
[        ]      at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:56)
[        ]      at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:32)
[        ]      at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:21)
[        ]      at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
[        ]      at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:43)
[        ]      at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:31)
[        ]      at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40)
[        ]      at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:281)
[        ]      at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40)
[        ]      at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
[        ]      at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
[        ]      at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
[        ]      at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:44)
[        ]      at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:33)
[        ]      at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76)
[        ]      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:139)
[        ]      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:128)
[        ]      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)
[  +32 ms]      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:69)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:327)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:314)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:307)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:293)
[        ]      at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:417)
[        ]      at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:339)
[        ]      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:1136)
[        ]      at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[        ]      at java.base/java.lang.Thread.run(Thread.java:840)
[        ] * Get more help at https://help.gradle.org
[        ] BUILD FAILED in 36s
[        ] 453 actionable tasks: 1 executed, 452 up-to-date
[        ] Watched directory hierarchies: [C:\Users\nada\fvm\default\packages\flutter_tools\gradle]
[ +544 ms] Running Gradle task 'assembleRelease'... (completed in 37.2s)
[  +23 ms] "flutter apk" took 38,811ms.
[  +21 ms] Gradle task assembleRelease failed with exit code 1
[        ]
           #0      throwToolExit (package:flutter_tools/src/base/common.dart:10:3)
           dart-lang/webdev#1      AndroidGradleBuilder.buildGradleApp (package:flutter_tools/src/android/gradle.dart:500:9)
           <asynchronous suspension>
           dart-lang/webdev#2      AndroidGradleBuilder.buildApk (package:flutter_tools/src/android/gradle.dart:224:5)
           <asynchronous suspension>
           dart-lang/webdev#3      BuildApkCommand.runCommand (package:flutter_tools/src/commands/build_apk.dart:141:5)
           <asynchronous suspension>
           dart-lang/webdev#4      FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1408:27)
           <asynchronous suspension>
           dart-lang/webdev#5      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
           <asynchronous suspension>
           dart-lang/webdev#6      CommandRunner.runCommand (package:args/command_runner.dart:212:13)
           <asynchronous suspension>
           dart-lang/webdev#7      FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:420:9)
           <asynchronous suspension>
           dart-lang/webdev#8      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
           <asynchronous suspension>
           dart-lang/webdev#9      FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:364:5)
           <asynchronous suspension>
           dart-lang/webdev#10     run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:130:9)
           <asynchronous suspension>
           dart-lang/webdev#11     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
           <asynchronous suspension>
           dart-lang/webdev#12     main (package:flutter_tools/executable.dart:93:3)
           <asynchronous suspension>


@bkonyi
Copy link
Contributor

bkonyi commented Nov 13, 2024

Hi @cyberpwnn,

I don't think this is related to package:frontend_server_client as that package is only used by our web tooling and this is an Android build failure. I think this belongs in the SDK issue tracker instead.

@bkonyi bkonyi transferred this issue from dart-lang/webdev Nov 13, 2024
@bkonyi bkonyi added the legacy-area-front-end Legacy: Use area-dart-model instead. label Nov 13, 2024
@johnniwinther
Copy link
Member

@jensjoha Can you determine where this problem comes from?

@jensjoha
Copy link
Contributor

So looking briefly at the code my guess is that something like this is happening:

  • It starts creating summary for a member (TypeFlowAnalysis.getSummary (package:vm/transformations/type_flow/analysis.dart:1912) -> SummaryCollector.createSummary (package:vm/transformations/type_flow/summary_collector.dart:838)). This sets _enclosingMember to a non-null value.
  • When visiting it sees a ConstantExpression and goes to SummaryCollector.visitConstantExpression.
  • This calls into ConstantAllocationCollector.typeFor which visits and lands in ConstantAllocationCollector.visitRecordConstant or ConstantAllocationCollector.visitInstanceConstant both of which calls addFieldUsedInConstant (which I assume is TypeFlowAnalysis.addFieldUsedInConstant).
  • This calls TypeFlowAnalysis.getFieldValue which, if field.isCovariantByClass, calls summaryCollector.createSummary on the field.
  • This then sets _enclosingMember to the field, overwriting the previous member, does its thing and sets _enclosingMember to null.
  • Back at the original member visit we reach SummaryCollector.visitFunctionExpression (package:vm/transformations/type_flow/summary_collector.dart:1763) which does _enclosingMember!, but as _enclosingMember on the recursive call was set to null it crashes.

All in all I'd say it's a VM issue, not a CFE one.

/cc @alexmarkov who seems to have done a lot with these files.

@alexmarkov
Copy link
Contributor

Thank you, @jensjoha ! SummaryCollector.createSummary is not re-enterable and if that happens, this is definitely a bug and can cause this crash.

However, I'm struggling to create a repro for this bug. As far as I understand, fields used in constants should be final and cannot be isCovariantByClass. Could you help me with this last bit?

@alexmarkov alexmarkov added the area-vm Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends. label Nov 14, 2024
copybara-service bot pushed a commit that referenced this issue Nov 14, 2024
TEST=ci
Issue: #57084
Change-Id: Icacf44847cf5f53c256c62390c4c9ddfc0b80646
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/395400
Auto-Submit: Alexander Markov <[email protected]>
Reviewed-by: Slava Egorov <[email protected]>
Commit-Queue: Alexander Markov <[email protected]>
@jensjoha
Copy link
Contributor

I don't know. It seems that it shouldn't be possible to have isCovariantByClass be true in a constant. Maybe it is anyway, or maybe there's another re-enterable way around. Or something else is weird.
It will be interesting if the new throw on _enclosingMember != null will turn up something.

@alexmarkov
Copy link
Contributor

@cyberpwnn Can you provide a sample which can be used to reproduce the crash?

@alexmarkov alexmarkov added the needs-info We need additional information from the issue author (auto-closed after 14 days if no response) label Nov 15, 2024
@jensjoha
Copy link
Contributor

@johnniwinther to the rescue on this one, being able to easily create a field in a constant marked as isCovariantByClass.

abstract class A<T> {
  T get field;
  void set field(T value);
}

class C<T> implements A<T> {
  @override
  final T field;

  const C(this.field);

  @override
  set field(value) => throw '';
}

const c = C<String>('');

void main() {
  print(c);
}

which - with some instrumentation to print some nice stuff - gives this:

Setting _staticTypeContext to non-null... It's already Instance of 'StaticTypeContextImpl'
Overwriting an already set _staticTypeContext
Previous set via:
#0      SummaryCollector.createSummary (package:vm/transformations/type_flow/summary_collector.dart:648:40)
#1      TypeFlowAnalysis.getSummary (package:vm/transformations/type_flow/analysis.dart:1920:36)
#2      _DirectInvocation._processFunction (package:vm/transformations/type_flow/analysis.dart:399:40)
#3      _DirectInvocation.process (package:vm/transformations/type_flow/analysis.dart:288:14)
#4      _WorkList.processInvocation (package:vm/transformations/type_flow/analysis.dart:1793:27)
#5      _WorkList.process (package:vm/transformations/type_flow/analysis.dart:1736:7)
#6      TypeFlowAnalysis.process (package:vm/transformations/type_flow/analysis.dart:1947:14)
#7      transformComponent (package:vm/transformations/type_flow/transformer.dart:122:20)
#8      runGlobalTransformations (package:vm/kernel_front_end.dart:640:20)
#9      compileToKernel (package:vm/kernel_front_end.dart:551:11)
<asynchronous suspension>
#10     runCompiler (package:vm/kernel_front_end.dart:339:19)
<asynchronous suspension>
#11     main (pkg/vm/bin/gen_kernel.dart:34:19)
<asynchronous suspension>

Currently at:
#0      SummaryCollector.createSummary (package:vm/transformations/type_flow/summary_collector.dart:645:24)
#1      TypeFlowAnalysis.getFieldValue (package:vm/transformations/type_flow/analysis.dart:1937:45)
#2      TypeFlowAnalysis.addFieldUsedInConstant (package:vm/transformations/type_flow/analysis.dart:2096:24)
#3      ConstantAllocationCollector.visitInstanceConstant.<anonymous closure> (package:vm/transformations/type_flow/summary_collector.dart:2956:45)
#4      _LinkedHashMapMixin.forEach (dart:_compact_hash:726:13)
#5      ConstantAllocationCollector.visitInstanceConstant (package:vm/transformations/type_flow/summary_collector.dart:2955:26)
#6      InstanceConstant.accept (package:kernel/src/ast/constants.dart:681:42)
#7      ConstantAllocationCollector.typeFor.<anonymous closure> (package:vm/transformations/type_flow/summary_collector.dart:2846:59)
#8      _LinkedHashMapMixin.putIfAbsent (dart:_compact_hash:636:23)
#9      ConstantAllocationCollector.typeFor (package:vm/transformations/type_flow/summary_collector.dart:2846:22)
#10     SummaryCollector.visitConstantExpression (package:vm/transformations/type_flow/summary_collector.dart:2626:40)
#11     ConstantExpression.accept (package:kernel/src/ast/expressions.dart:4657:44)
#12     SummaryCollector._visit (package:vm/transformations/type_flow/summary_collector.dart:987:44)
#13     SummaryCollector._visitArguments (package:vm/transformations/type_flow/summary_collector.dart:1005:16)
#14     SummaryCollector.visitStaticInvocation (package:vm/transformations/type_flow/summary_collector.dart:2146:18)
#15     StaticInvocation.accept (package:kernel/src/ast/expressions.dart:2603:44)
#16     SummaryCollector._visit (package:vm/transformations/type_flow/summary_collector.dart:987:44)
#17     SummaryCollector.visitExpressionStatement (package:vm/transformations/type_flow/summary_collector.dart:2312:5)
#18     ExpressionStatement.accept (package:kernel/src/ast/statements.dart:50:43)
#19     SummaryCollector._visitWithoutResult (package:vm/transformations/type_flow/summary_collector.dart:990:10)
#20     List.forEach (dart:core-patch/growable_array.dart:417:8)
#21     SummaryCollector.visitBlock (package:vm/transformations/type_flow/summary_collector.dart:2263:21)
#22     Block.accept (package:kernel/src/ast/statements.dart:103:43)
#23     SummaryCollector._visitWithoutResult (package:vm/transformations/type_flow/summary_collector.dart:990:10)
#24     SummaryCollector.createSummary (package:vm/transformations/type_flow/summary_collector.dart:848:9)
#25     TypeFlowAnalysis.getSummary (package:vm/transformations/type_flow/analysis.dart:1920:36)
#26     _DirectInvocation._processFunction (package:vm/transformations/type_flow/analysis.dart:399:40)
#27     _DirectInvocation.process (package:vm/transformations/type_flow/analysis.dart:288:14)
#28     _WorkList.processInvocation (package:vm/transformations/type_flow/analysis.dart:1793:27)
#29     _WorkList.process (package:vm/transformations/type_flow/analysis.dart:1736:7)
#30     TypeFlowAnalysis.process (package:vm/transformations/type_flow/analysis.dart:1947:14)
#31     transformComponent (package:vm/transformations/type_flow/transformer.dart:122:20)
#32     runGlobalTransformations (package:vm/kernel_front_end.dart:640:20)
#33     compileToKernel (package:vm/kernel_front_end.dart:551:11)
<asynchronous suspension>
#34     runCompiler (package:vm/kernel_front_end.dart:339:19)
<asynchronous suspension>
#35     main (pkg/vm/bin/gen_kernel.dart:34:19)
<asynchronous suspension>

Setting _staticTypeContext to null
Unhandled exception:
Null check operator used on a null value
#0      SummaryCollector._staticDartType (package:vm/transformations/type_flow/summary_collector.dart:1412:44)
#1      SummaryCollector._makeCall (package:vm/transformations/type_flow/summary_collector.dart:1298:30)
#2      SummaryCollector.visitStaticInvocation (package:vm/transformations/type_flow/summary_collector.dart:2162:23)
#3      StaticInvocation.accept (package:kernel/src/ast/expressions.dart:2603:44)
#4      SummaryCollector._visit (package:vm/transformations/type_flow/summary_collector.dart:987:44)
#5      SummaryCollector.visitExpressionStatement (package:vm/transformations/type_flow/summary_collector.dart:2312:5)
#6      ExpressionStatement.accept (package:kernel/src/ast/statements.dart:50:43)
#7      SummaryCollector._visitWithoutResult (package:vm/transformations/type_flow/summary_collector.dart:990:10)
#8      List.forEach (dart:core-patch/growable_array.dart:417:8)
#9      SummaryCollector.visitBlock (package:vm/transformations/type_flow/summary_collector.dart:2263:21)
#10     Block.accept (package:kernel/src/ast/statements.dart:103:43)
#11     SummaryCollector._visitWithoutResult (package:vm/transformations/type_flow/summary_collector.dart:990:10)
#12     SummaryCollector.createSummary (package:vm/transformations/type_flow/summary_collector.dart:848:9)
#13     TypeFlowAnalysis.getSummary (package:vm/transformations/type_flow/analysis.dart:1920:36)
#14     _DirectInvocation._processFunction (package:vm/transformations/type_flow/analysis.dart:399:40)
#15     _DirectInvocation.process (package:vm/transformations/type_flow/analysis.dart:288:14)
#16     _WorkList.processInvocation (package:vm/transformations/type_flow/analysis.dart:1793:27)
#17     _WorkList.process (package:vm/transformations/type_flow/analysis.dart:1736:7)
#18     TypeFlowAnalysis.process (package:vm/transformations/type_flow/analysis.dart:1947:14)
#19     transformComponent (package:vm/transformations/type_flow/transformer.dart:122:20)
#20     runGlobalTransformations (package:vm/kernel_front_end.dart:640:20)
#21     compileToKernel (package:vm/kernel_front_end.dart:551:11)
<asynchronous suspension>
#22     runCompiler (package:vm/kernel_front_end.dart:339:19)
<asynchronous suspension>
#23     main (pkg/vm/bin/gen_kernel.dart:34:19)
<asynchronous suspension>

which - via visitInstanceConstant - works as described in #57084 (comment) (except that it crashes on _staticTypeContext! instead).

Changing the main to

void main() {
  c;
  () {
    print(c);
  }();
}

we crash at the in visitFunctionExpression on _enclosingMember!.

@jensjoha jensjoha removed the needs-info We need additional information from the issue author (auto-closed after 14 days if no response) label Nov 18, 2024
@alexmarkov
Copy link
Contributor

Thank you for the reproduction, @jensjoha and @johnniwinther .

Kernel for this example:

  abstract class A<T extends core::Object? = dynamic> extends core::Object {
    synthetic constructor •() → foo4::A<foo4::A::T%>
      : super core::Object::•()
      ;
    abstract get field() → foo4::A::T%;
    abstract set field(covariant-by-class foo4::A::T% value) → void;
  }
  class C<T extends core::Object? = dynamic> extends core::Object implements foo4::A<foo4::C::T%> /*hasConstConstructor*/  {
    @#C1
    covariant-by-class final field foo4::C::T% field;
    const constructor •(foo4::C::T% field) → foo4::C<foo4::C::T%>
      : foo4::C::field = field, super core::Object::•()
      ;
    @#C1
    set field(covariant-by-class foo4::C::T% value) → void
      return throw "";
  }

I'm still wondering if C.field should really be marked isCovariantByClass.

Description of this flag:

/// Indicates whether the implicit setter associated with this field needs to
/// contain a runtime type check to deal with generic covariance.
///
/// When `true`, runtime checks may need to be performed.
bool get isCovariantByClass => flags & FlagCovariantByClass != 0;

There is no implicit setter associated with that final field. There is a separate setter with the same name, but it is not implicit, and its parameter is marked isCovariantByClass which looks correct.

@johnniwinther WDYT?

I can fix this bug by ignoring isCovariantByClass on the fields without implicit setters, but maybe it would be better to fix this in the front-end so this flag would be set according to its description. I also looked at other uses of this flag in the VM, and it looks like TypeFlowAnalysis.getFieldValue is the only place where we look at Field.isCovariantByClass for fields without implicit setters, all other uses should be fine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-vm Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends. legacy-area-front-end Legacy: Use area-dart-model instead.
Projects
None yet
Development

No branches or pull requests

5 participants