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.09k stars 1.56k forks source link

"The Dart compiler exited unexpectedly" after debugging LinkedList #48169

Closed AlexanderFarkas closed 2 years ago

AlexanderFarkas commented 2 years ago

Just debug this piece of code:

import 'dart:collection';

class Entry extends LinkedListEntry<Entry> {}

void main() {
  final l = LinkedList<Entry>();
  print(l); // here is the breakpoint
}

Exception:

Unhandled exception:
Invalid argument(s): Type parameter TypeParameter(LinkedList.T) is not indexed
#0      TypeParameterIndexer.[] (package:kernel/binary/ast_to_binary.dart:2925:8)
#1      BinaryPrinter.visitTypeParameterType (package:kernel/binary/ast_to_binary.dart:2432:38)
#2      TypeParameterType.accept (package:kernel/ast.dart:11884:42)
#3      BinaryPrinter.writeDartType (package:kernel/binary/ast_to_binary.dart:309:10)
#4      BinaryPrinter.visitInstanceGet (package:kernel/binary/ast_to_binary.dart:1551:5)
#5      InstanceGet.accept (package:kernel/ast.dart:4396:44)
#6      BinaryPrinter.writeNode (package:kernel/binary/ast_to_binary.dart:430:10)

#7      BinaryPrinter.writeOptionalNode (package:kernel/binary/ast_to_binary.dart:522:7)
#8      BinaryPrinter.visitReturnStatement (package:kernel/binary/ast_to_binary.dart:2210:5)
#9      ReturnStatement.accept (package:kernel/ast.dart:9869:43)
#10     BinaryPrinter.writeNode (package:kernel/binary/ast_to_binary.dart:430:10)
#11     BinaryPrinter.writeOptionalNode (package:kernel/binary/ast_to_binary.dart:522:7)
#12     BinaryPrinter.visitFunctionNode (package:kernel/binary/ast_to_binary.dart:1487:5)
#13     FunctionNode.accept (package:kernel/ast.dart:3851:38)
#14     BinaryPrinter.writeFunctionNode (package:kernel/binary/ast_to_binary.dart:437:10)
#15     BinaryPrinter.visitProcedure (package:kernel/binary/ast_to_binary.dart:1318:5)

#16     Procedure.accept (package:kernel/ast.dart:3160:40)
#17     BinaryPrinter.writeProcedureNode (package:kernel/binary/ast_to_binary.dart:458:10)
#18     BinaryPrinter.writeProcedureNodeList (package:kernel/binary/ast_to_binary.dart:349:7)
#19     BinaryPrinter.visitClass (package:kernel/binary/ast_to_binary.dart:1222:5)
#20     Class.accept (package:kernel/ast.dart:1417:38)
#21     BinaryPrinter.writeClassNode (package:kernel/binary/ast_to_binary.dart:472:10)
#22     BinaryPrinter.writeClassNodeList (package:kernel/binary/ast_to_binary.dart:367:7)
#23     BinaryPrinter.visitLibrary (package:kernel/binary/ast_to_binary.dart:1058:5)

#24     Library.accept (package:kernel/ast.dart:557:38)
#25     BinaryPrinter.writeLibraryNode (package:kernel/binary/ast_to_binary.dart:451:10)
#26     BinaryPrinter.writeLibraries (package:kernel/binary/ast_to_binary.dart:756:9)
#27     BinaryPrinter.writeComponentFile.<anonymous closure> (package:kernel/binary/ast_to_binary.dart:595:7)
#28     Timeline.timeSync (dart:developer/timeline.dart:163:22)

#29     BinaryPrinter.writeComponentFile (package:kernel/binary/ast_to_binary.dart:577:14)
#30     serializeComponent (package:front_end/src/fasta/kernel/utils.dart:93:11)
#31     FrontendCompiler.compileExpression (package:frontend_server/frontend_server.dart:819:16)
<asynchronous suspension>

Exception: the Dart compiler exited unexpectedly.
package:flutter_tools/src/base/common.dart 10:3  throwToolExit
package:flutter_tools/src/compile.dart 773:13    DefaultResidentCompiler._compile.<fn>

dart:async/zone.dart 1420:47                     _rootRun
dart:async/zone.dart 1328:19                     _CustomZone.run
dart:async/zone.dart 1236:7                      _CustomZone.runGuarded
dart:async/stream_impl.dart 394:13               _BufferingStreamSubscription._sendDone.sendDone
dart:async/stream_impl.dart 404:7                _BufferingStreamSubscription._sendDone
dart:async/stream_impl.dart 291:7                _BufferingStreamSubscription._close
dart:async/stream_transformers.dart 87:11        _SinkTransformerStreamSubscription._close
dart:async/stream_transformers.dart 21:11        _EventSinkWrapper.close
dart:convert/string_conversion.dart 251:11       _StringAdapterSink.close
dart:convert/line_splitter.dart 135:11           _LineSplitterSink.close
dart:async/stream_transformers.dart 132:24       _SinkTransformerStreamSubscription._handleDone
dart:async/zone.dart 1420:47                     _rootRun
dart:async/zone.dart 1328:19                     _CustomZone.run
dart:async/zone.dart 1236:7                      _CustomZone.runGuarded
dart:async/stream_impl.dart 394:13               _BufferingStreamSubscription._sendDone.sendDone
dart:async/stream_impl.dart 404:7                _BufferingStreamSubscription._sendDone
dart:async/stream_impl.dart 291:7                _BufferingStreamSubscription._close
dart:async/stream_transformers.dart 87:11        _SinkTransformerStreamSubscription._close
dart:async/stream_transformers.dart 21:11        _EventSinkWrapper.close
dart:convert/string_conversion.dart 251:11       _StringAdapterSink.close
dart:convert/string_conversion.dart 305:20       _Utf8ConversionSink.close
dart:convert/chunked_conversion.dart 81:18       _ConverterStreamEventSink.close
dart:async/stream_transformers.dart 132:24       _SinkTransformerStreamSubscription._handleDone
dart:async/zone.dart 1420:47                     _rootRun
dart:async/zone.dart 1328:19                     _CustomZone.run
dart:async/zone.dart 1236:7                      _CustomZone.runGuarded
dart:async/stream_impl.dart 394:13               _BufferingStreamSubscription._sendDone.sendDone
dart:async/stream_impl.dart 404:7                _BufferingStreamSubscription._sendDone
dart:async/stream_impl.dart 291:7                _BufferingStreamSubscription._close
dart:async/stream_controller.dart 741:19         _SyncStreamControllerDispatch._sendDone
dart:async/stream_controller.dart 596:7          _StreamController._closeUnchecked
dart:async/stream_controller.dart 589:5          _StreamController.close
dart:io-patch/socket_patch.dart 2309:21          _Socket._onData
dart:async/zone.dart 1444:13                     _rootRunUnary
dart:async/zone.dart 1335:19                     _CustomZone.runUnary
dart:async/zone.dart 1244:7                      _CustomZone.runUnaryGuarded
dart:async/stream_impl.dart 341:11               _BufferingStreamSubscription._sendData
dart:async/stream_impl.dart 271:7                _BufferingStreamSubscription._add
dart:async/stream_controller.dart 733:19         _SyncStreamControllerDispatch._sendData
dart:async/stream_controller.dart 607:7          _StreamController._add
dart:async/stream_controller.dart 554:5          _StreamController.add
dart:io-patch/socket_patch.dart 1837:35          new _RawSocket.<fn>
dart:io-patch/socket_patch.dart 1307:18          _NativeSocket.issueReadEvent.issue
dart:async/schedule_microtask.dart 40:21         _microtaskLoop
dart:async/schedule_microtask.dart 49:5          _startMicrotaskLoop
dart:isolate-patch/isolate_patch.dart 122:13     _runPendingImmediateCallback
dart:isolate-patch/isolate_patch.dart 193:5      _RawReceivePortImpl._handleMessage
2

SocketException: Write failed (OS Error: Broken pipe, errno = 32), port = 0
dart:io-patch/socket_patch.dart 1182:34        _NativeSocket.write
dart:io-patch/socket_patch.dart 1897:15        _RawSocket.write
dart:io-patch/socket_patch.dart 2334:18        _Socket._write
dart:io-patch/socket_patch.dart 2082:26        _SocketStreamConsumer.write
dart:io-patch/socket_patch.dart 2056:11        _SocketStreamConsumer.addStream.<fn>
dart:async/zone.dart 1436:47                   _rootRunUnary
dart:async/zone.dart 1335:19                   _CustomZone.runUnary
dart:async/zone.dart 1244:7                    _CustomZone.runUnaryGuarded
dart:async/stream_impl.dart 341:11             _BufferingStreamSubscription._sendData
dart:async/stream_impl.dart 271:7              _BufferingStreamSubscription._add
dart:async/stream_controller.dart 733:19       _SyncStreamControllerDispatch._sendData
dart:async/stream_controller.dart 607:7        _StreamController._add
dart:async/stream_controller.dart 554:5        _StreamController.add
dart:io/io_sink.dart 136:17                    _StreamSinkImpl.add
dart:io/io_sink.dart 269:5                     _IOSinkImpl.write
dart:io/io_sink.dart 289:5                     _IOSinkImpl.writeln
dart:io-patch/socket_patch.dart 2174:45        _Socket.writeln
dart:io/stdio.dart 319:11                      _StdSink.writeln
package:flutter_tools/src/compile.dart 826:9   DefaultResidentCompiler._compileExpression
package:flutter_tools/src/compile.dart 390:16  _CompileExpressionRequest._run
package:flutter_tools/src/compile.dart 345:30  _CompilationRequest.run
package:flutter_tools/src/compile.dart 694:23  DefaultResidentCompiler._handleCompilationRequest
2

Exception: the Dart compiler exited unexpectedly.
package:flutter_tools/src/base/common.dart 10:3  throwToolExit
package:flutter_tools/src/compile.dart 784:9     DefaultResidentCompiler._compile.<fn>
dart:async/zone.dart 1436:47                     _rootRunUnary
dart:async/zone.dart 1335:19                     _CustomZone.runUnary

VS Code (version 1.63.2) Dart Extension v3.32.0 Dart SDK version: 2.15.1 (stable) on "macos_x64"

a-siva commented 2 years ago

/cc @johnniwinther seems like an unhandled exception in package:kernel/binary/ast_to_binary.dart

jensjoha commented 2 years ago

Thanks for the report. I can't reproduce it though. You you remember what expression you evaluated?

AlexanderFarkas commented 2 years ago

It's strange, but it happens when you debug via flutter. Code is the same. Compiler exits when you try to expand this l variable.

Screenshot 2022-01-25 at 14 06 28

Error is shorter (previous stack trace was taken from flutter_test environment):

Unhandled exception:
Invalid argument(s): Type parameter TypeParameter(LinkedList.T) is not indexed
#0      TypeParameterIndexer.[] (package:kernel/binary/ast_to_binary.dart:2925:8)
#1      BinaryPrinter.visitTypeParameterType (package:kernel/binary/ast_to_binary.dart:2432:38)
#2      TypeParameterType.accept (package:kernel/ast.dart:11884:42)
#3      BinaryPrinter.writeDartType (package:kernel/binary/ast_to_binary.dart:309:10)
#4      BinaryPrinter.visitInstanceGet (package:kernel/binary/ast_to_binary.dart:1551:5)

#5      InstanceGet.accept (package:kernel/ast.dart:4396:44)
#6      BinaryPrinter.writeNode (package:kernel/binary/ast_to_binary.dart:430:10)
#7      BinaryPrinter.writeOptionalNode (package:kernel/binary/ast_to_binary.dart:522:7)
#8      BinaryPrinter.visitReturnStatement (package:kernel/binary/ast_to_binary.dart:2210:5)
#9      ReturnStatement.accept (package:kernel/ast.dart:9869:43)
#10     BinaryPrinter.writeNode (package:kernel/binary/ast_to_binary.dart:430:10)
#11     BinaryPrinter.writeOptionalNode (package:kernel/binary/ast_to_binary.dart:522:7)
#12     BinaryPrinter.visitFunctionNode (package:kernel/binary/ast_to_binary.dart:1487:5)
#13     FunctionNode.accept (package:kernel/ast.dart:3851:38)

#14     BinaryPrinter.writeFunctionNode (package:kernel/binary/ast_to_binary.dart:437:10)
#15     BinaryPrinter.visitProcedure (package:kernel/binary/ast_to_binary.dart:1318:5)
#16     Procedure.accept (package:kernel/ast.dart:3160:40)
#17     BinaryPrinter.writeProcedureNode (package:kernel/binary/ast_to_binary.dart:458:10)
#18     BinaryPrinter.writeProcedureNodeList (package:kernel/binary/ast_to_binary.dart:349:7)
#19     BinaryPrinter.visitClass (package:kernel/binary/ast_to_binary.dart:1222:5)

#20     Class.accept (package:kernel/ast.dart:1417:38)
#21     BinaryPrinter.writeClassNode (package:kernel/binary/ast_to_binary.dart:472:10)
#22     BinaryPrinter.writeClassNodeList (package:kernel/binary/ast_to_binary.dart:367:7)
#23     BinaryPrinter.visitLibrary (package:kernel/binary/ast_to_binary.dart:1058:5)

#24     Library.accept (package:kernel/ast.dart:557:38)
#25     BinaryPrinter.writeLibraryNode (package:kernel/binary/ast_to_binary.dart:451:10)
#26     BinaryPrinter.writeLibraries (package:kernel/binary/ast_to_binary.dart:756:9)

#27     BinaryPrinter.writeComponentFile.<anonymous closure> (package:kernel/binary/ast_to_binary.dart:595:7)
#28     Timeline.timeSync (dart:developer/timeline.dart:163:22)
#29     BinaryPrinter.writeComponentFile (package:kernel/binary/ast_to_binary.dart:577:14)

#30     serializeComponent (package:front_end/src/fasta/kernel/utils.dart:93:11)
#31     FrontendCompiler.compileExpression (package:frontend_server/frontend_server.dart:819:16)
<asynchronous suspension>

3
the Dart compiler exited unexpectedly.
jensjoha commented 2 years ago

Thanks. I've reproduced it (also outside Flutter).