dart-lang / sdk

The Dart SDK, including the VM, JS and Wasm compilers, analysis, core libraries, and more.
https://dart.dev
BSD 3-Clause "New" or "Revised" License
10.08k stars 1.56k forks source link

Analysis server crashes consistently with a specific file #55395

Open akemimadoka opened 5 months ago

akemimadoka commented 5 months ago

dart version:

Dart SDK version: 3.4.0-282.0.dev (dev) (Thu Mar 28 08:25:18 2024 -0700) on "windows_x64"

Steps to Reproduce

  1. Open file https://github.com/dart-lang/sdk/blob/fedd74669aa8409d68ad0d2afb9ce133b8370e3a/pkg/vm/testcases/bytecode/type_ops.dart in IDE
  2. The analysis server starts to analyze the project.
  3. After a short period, the analysis server crashes.

Logs

[15:09:28] [Analyzer] [Info] <== {"jsonrpc":"2.0","method":"$/progress","params":{"token":"ANALYZING","value":{"kind":"end"}}}
[15:09:28] [Analyzer] [Error] Unhandled exception:
type 'ParameterMember' is not a subtype of type 'ParameterElementImpl' in type cast
#0      ExecutableElementImpl.parameters= (package:analyzer/src/dart/element/element.dart:3251:18)
#1      InheritanceManager3._inheritCovariance (package:analyzer/src/dart/element/inheritance_manager3.dart:779:14)
#2      InheritanceManager3._getInterfaceClass.<anonymous closure> (package:analyzer/src/dart/element/inheritance_manager3.dart:635:20)
#3      MapBase.map (dart:collection/maps.da…
alexmarkov commented 1 month ago

The latest version of analyzer (at 7eef09cd6eccd60d66fc75a0435d2979385614d0) still crashes with that exception.

Small repro:

abstract class F<T> {
  void foo<Q>(Q a, covariant num b);
}

class G<T> {
  void foo<Q>(Q a, int b) {}
}

class H<T> extends G<T> implements F<T> {
}
out/ReleaseX64/dart-sdk/bin/dart analyze foo3.dart
Analyzing foo3.dart...                  
An unexpected error was encountered by the Analysis Server.
Please file an issue at https://github.com/dart-lang/sdk/issues/new/choose with the following details:

Internal error: type 'ParameterMember' is not a subtype of type 'ParameterElementImpl' in type cast
#0      ExecutableElementImpl.parameters= (package:analyzer/src/dart/element/element.dart:3206:18)
#1      InheritanceManager3._inheritCovariance (package:analyzer/src/dart/element/inheritance_manager3.dart:962:14)
#2      InheritanceManager3._getInterfaceClass.<anonymous closure> (package:analyzer/src/dart/element/inheritance_manager3.dart:639:20)
#3      MapBase.map (dart:collection/maps.dart:82:28)
#4      InheritanceManager3._getInterfaceClass (package:analyzer/src/dart/element/inheritance_manager3.dart:638:31)
#5      InheritanceManager3.getInterface (package:analyzer/src/dart/element/inheritance_manager3.dart:242:18)
#6      _ClassVerifier.verify (package:analyzer/src/error/inheritance_override.dart:212:33)
#7      InheritanceOverrideVerifier.verifyUnit (package:analyzer/src/error/inheritance_override.dart:123:20)
#8      LibraryAnalyzer._computeVerifyErrors (package:analyzer/src/dart/analysis/library_analyzer.dart:433:7)
#9      LibraryAnalyzer._computeDiagnostics (package:analyzer/src/dart/analysis/library_analyzer.dart:293:7)
#10     LibraryAnalyzer.analyze (package:analyzer/src/dart/analysis/library_analyzer.dart:109:5)
#11     AnalysisDriver._analyzeFileImpl.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1394:11)
<asynchronous suspension>
#12     PerformanceLog.runAsync (package:analyzer/src/dart/analysis/performance_logger.dart:50:14)
<asynchronous suspension>
#13     AnalysisDriver._analyzeFile.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1308:9)
<asynchronous suspension>
#14     OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:174:14)
<asynchronous suspension>
#15     AnalysisDriver._analyzeFile (package:analyzer/src/dart/analysis/driver.dart:1305:5)
<asynchronous suspension>
#16     AnalysisDriver._produceErrors (package:analyzer/src/dart/analysis/driver.dart:2018:5)
<asynchronous suspension>
#17     AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:1245:7)
<asynchronous suspension>
#18     AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:2447:7)
<asynchronous suspension>

null

Slightly different crash:

abstract class F<T> {
  void foo<Q>(Q a, covariant num b);
  void bar<Q>(Q a, covariant num b);
}

class G<T> {
  void foo<Q>(Q a, int b) {}
}

class H<T> extends G<T> implements F<T> {
  void bar<Q>(Q a, int b) {}
}
Analyzing foo3.dart...                  
An unexpected error was encountered by the Analysis Server.
Please file an issue at https://github.com/dart-lang/sdk/issues/new/choose with the following details:

Internal error: type 'ParameterMember' is not a subtype of type 'ParameterElementImpl' in type cast
#0      ExecutableElementImpl.parameters= (package:analyzer/src/dart/element/element.dart:3206:18)
#1      InheritanceManager3._inheritCovariance (package:analyzer/src/dart/element/inheritance_manager3.dart:962:14)
#2      InheritanceManager3._getInterfaceClass.<anonymous closure> (package:analyzer/src/dart/element/inheritance_manager3.dart:639:20)
#3      MapBase.map (dart:collection/maps.dart:82:28)
#4      InheritanceManager3._getInterfaceClass (package:analyzer/src/dart/element/inheritance_manager3.dart:638:31)
#5      InheritanceManager3.getInterface (package:analyzer/src/dart/element/inheritance_manager3.dart:242:18)
#6      InheritanceManager3.getOverridden2 (package:analyzer/src/dart/element/inheritance_manager3.dart:327:21)
#7      InstanceMemberInferrer._inferExecutable (package:analyzer/src/task/strong_mode.dart:409:42)
#8      InstanceMemberInferrer._inferClass (package:analyzer/src/task/strong_mode.dart:347:11)
#9      InstanceMemberInferrer._inferClasses (package:analyzer/src/task/strong_mode.dart:366:9)
#10     InstanceMemberInferrer.inferCompilationUnit (package:analyzer/src/task/strong_mode.dart:37:5)
#11     TopLevelInference._performOverrideInference (package:analyzer/src/summary2/top_level_inference.dart:113:18)
#12     TopLevelInference.infer (package:analyzer/src/summary2/top_level_inference.dart:104:5)
#13     Linker._performTopLevelInference (package:analyzer/src/summary2/link.dart:424:29)
#14     Linker._buildOutlines (package:analyzer/src/summary2/link.dart:268:5)
<asynchronous suspension>
#15     Linker.link.<anonymous closure> (package:analyzer/src/summary2/link.dart:123:7)
<asynchronous suspension>
#16     OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:174:14)
<asynchronous suspension>
#17     Linker.link (package:analyzer/src/summary2/link.dart:122:5)
<asynchronous suspension>
#18     link (package:analyzer/src/summary2/link.dart:41:3)
<asynchronous suspension>
#19     LibraryContext.load.loadBundle.<anonymous closure> (package:analyzer/src/dart/analysis/library_context.dart:197:22)
<asynchronous suspension>
#20     OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:174:14)
<asynchronous suspension>
#21     LibraryContext.load.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:194:24)
<asynchronous suspension>
#22     LibraryContext.load.<anonymous closure> (package:analyzer/src/dart/analysis/library_context.dart:282:7)
<asynchronous suspension>
#23     PerformanceLog.runAsync (package:analyzer/src/dart/analysis/performance_logger.dart:50:14)
<asynchronous suspension>
#24     LibraryContext.load (package:analyzer/src/dart/analysis/library_context.dart:273:5)
<asynchronous suspension>
#25     AnalysisDriver._produceErrors (package:analyzer/src/dart/analysis/driver.dart:1968:5)
<asynchronous suspension>
#26     AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:1245:7)
<asynchronous suspension>
#27     AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:2447:7)
<asynchronous suspension>

#0      LibraryContext._throwLibraryCycleLinkException (package:analyzer/src/dart/analysis/library_context.dart:411:5)
#1      LibraryContext.load.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:208:11)
<asynchronous suspension>
#2      LibraryContext.load.<anonymous closure> (package:analyzer/src/dart/analysis/library_context.dart:282:7)
<asynchronous suspension>
#3      PerformanceLog.runAsync (package:analyzer/src/dart/analysis/performance_logger.dart:50:14)
<asynchronous suspension>
#4      LibraryContext.load (package:analyzer/src/dart/analysis/library_context.dart:273:5)
<asynchronous suspension>
#5      AnalysisDriver._produceErrors (package:analyzer/src/dart/analysis/driver.dart:1968:5)
<asynchronous suspension>
#6      AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:1245:7)
<asynchronous suspension>
#7      AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:2447:7)
<asynchronous suspension>

Unhandled exception:
type 'ParameterMember' is not a subtype of type 'ParameterElementImpl' in type cast
#0      ExecutableElementImpl.parameters= (package:analyzer/src/dart/element/element.dart:3206:18)
#1      InheritanceManager3._inheritCovariance (package:analyzer/src/dart/element/inheritance_manager3.dart:962:14)
#2      InheritanceManager3._getInterfaceClass.<anonymous closure> (package:analyzer/src/dart/element/inheritance_manager3.dart:639:20)
#3      MapBase.map (dart:collection/maps.dart:82:28)
#4      InheritanceManager3._getInterfaceClass (package:analyzer/src/dart/element/inheritance_manager3.dart:638:31)
#5      InheritanceManager3.getInterface (package:analyzer/src/dart/element/inheritance_manager3.dart:242:18)
#6      InheritanceManager3.getOverridden2 (package:analyzer/src/dart/element/inheritance_manager3.dart:327:21)
#7      InstanceMemberInferrer._inferExecutable (package:analyzer/src/task/strong_mode.dart:409:42)
#8      InstanceMemberInferrer._inferClass (package:analyzer/src/task/strong_mode.dart:347:11)
#9      InstanceMemberInferrer._inferClasses (package:analyzer/src/task/strong_mode.dart:366:9)
#10     InstanceMemberInferrer.inferCompilationUnit (package:analyzer/src/task/strong_mode.dart:37:5)
#11     TopLevelInference._performOverrideInference (package:analyzer/src/summary2/top_level_inference.dart:113:18)
#12     TopLevelInference.infer (package:analyzer/src/summary2/top_level_inference.dart:104:5)
#13     Linker._performTopLevelInference (package:analyzer/src/summary2/link.dart:424:29)
#14     Linker._buildOutlines (package:analyzer/src/summary2/link.dart:268:5)
<asynchronous suspension>
#15     Linker.link.<anonymous closure> (package:analyzer/src/summary2/link.dart:123:7)
<asynchronous suspension>
#16     OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:174:14)
<asynchronous suspension>
#17     Linker.link (package:analyzer/src/summary2/link.dart:122:5)
<asynchronous suspension>
#18     link (package:analyzer/src/summary2/link.dart:41:3)
<asynchronous suspension>
#19     LibraryContext.load.loadBundle.<anonymous closure> (package:analyzer/src/dart/analysis/library_context.dart:197:22)
<asynchronous suspension>
#20     OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:174:14)
<asynchronous suspension>
#21     LibraryContext.load.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:194:24)
<asynchronous suspension>
#22     LibraryContext.load.<anonymous closure> (package:analyzer/src/dart/analysis/library_context.dart:282:7)
<asynchronous suspension>
#23     PerformanceLog.runAsync (package:analyzer/src/dart/analysis/performance_logger.dart:50:14)
<asynchronous suspension>
#24     LibraryContext.load (package:analyzer/src/dart/analysis/library_context.dart:273:5)
<asynchronous suspension>
#25     AnalysisDriver._produceErrors (package:analyzer/src/dart/analysis/driver.dart:1968:5)
<asynchronous suspension>
#26     AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:1245:7)
<asynchronous suspension>
#27     AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:2447:7)
<asynchronous suspension>

#0      LibraryContext._throwLibraryCycleLinkException (package:analyzer/src/dart/analysis/library_context.dart:411:5)
#1      LibraryContext.load.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:208:11)
<asynchronous suspension>
#2      LibraryContext.load.<anonymous closure> (package:analyzer/src/dart/analysis/library_context.dart:282:7)
<asynchronous suspension>
#3      PerformanceLog.runAsync (package:analyzer/src/dart/analysis/performance_logger.dart:50:14)
<asynchronous suspension>
#4      LibraryContext.load (package:analyzer/src/dart/analysis/library_context.dart:273:5)
<asynchronous suspension>
#5      AnalysisDriver._produceErrors (package:analyzer/src/dart/analysis/driver.dart:1968:5)
<asynchronous suspension>
#6      AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:1245:7)
<asynchronous suspension>
#7      AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:2447:7)
<asynchronous suspension>
Bad state: The analysis server crashed unexpectedly

The analysis server shut down unexpectedly.
Please report this at dartbug.com.