Skip to content

VM crash when inspecting a parameter in VSCode debugger #59653

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
stereotype441 opened this issue Dec 3, 2024 · 7 comments
Closed

VM crash when inspecting a parameter in VSCode debugger #59653

stereotype441 opened this issue Dec 3, 2024 · 7 comments
Assignees
Labels
area-vm Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends. crash Process exits with SIGSEGV, SIGABRT, etc. An unhandled exception is not a crash. P2 A bug or feature request we're likely to work on triaged Issue has been triaged by sub team type-bug Incorrect behavior (everything from a crash to more subtle misbehavior) vm-service The VM Service Protocol, both the specification and its implementation

Comments

@stereotype441
Copy link
Member

stereotype441 commented Dec 3, 2024

(Note: I've been seeing crashes like this for at least a month; this is the first time I've figured out a repro)

Build the latest Dart SDK as of abb17bc. Then check out this code.

Using Visual Studio Code, with the SDK set to the SDK that was just built:

  • Navigate to pkg/_fe_analyzer_shared/lib/src/type_inference/null_shorting.dart and place a breakpoint on line 17.
  • Navigate to pkg/analyzer/test/src/dart/resolution/extension_method_test.dart. Click on the "Debug" button that appears above line 12.
  • Wait for the breakpoint to be reached.
  • Click on the second line in the call stack ("TypeAnalyzer.analyzeExpression"). This causes the editor to open up pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart to line 583.
  • Position the mouse pointer over the identifier node on line 568.

Expected behavior: the value of the local variable node is shown in a pop-up.

Observed behavior: the VM crashes with the following stacktrace:

Stacktrace
../../runtime/vm/class_finalizer.cc: 393: error: Too many type parameters in 7189775382712
version=3.7.0-edge (main) (Unknown timestamp) on "linux_x64"
pid=99173, thread=99207, isolate_group=main(0x5649c910d070), isolate=(nil)((nil))
os=linux, arch=x64, comp=no, sim=no
isolate_instructions=5649994fd300, vm_instructions=5649994fd300
fp=7f821ba76600, sp=7f821ba764d0, pc=56499977a44c
  pc 0x000056499977a44c fp 0x00007f821ba76600 dart::Profiler::DumpStackTrace+0x7c
  pc 0x00005649994fd4f4 fp 0x00007f821ba766e0 dart::Assert::Fail+0x84
  pc 0x00005649996a0059 fp 0x00007f821ba76740 dart::ClassFinalizer::FinalizeType+0x379
  pc 0x000056499969fe00 fp 0x00007f821ba767a0 dart::ClassFinalizer::FinalizeType+0x120
  pc 0x000056499969ff80 fp 0x00007f821ba76800 dart::ClassFinalizer::FinalizeType+0x2a0
  pc 0x00005649996e87e9 fp 0x00007f821ba76830 dart::kernel::KernelLoader::LoadExpressionEvaluationFunction+0x179
  pc 0x000056499971a753 fp 0x00007f821ba76bb0 dart::Instance::EvaluateCompiledExpression+0x173
  pc 0x00005649996b28be fp 0x00007f821ba76c30 dart::ActivationFrame::EvaluateCompiledExpression+0x12e
  pc 0x00005649997a6d08 fp 0x00007f821ba76cb0 dart::EvaluateCompiledExpression+0x288
  pc 0x000056499979cfe2 fp 0x00007f821ba772b0 dart::Service::InvokeMethod+0x512
  pc 0x000056499979d351 fp 0x00007f821ba772d0 dart::Service::HandleIsolateMessage+0x11
  pc 0x00005649996ccbc3 fp 0x00007f821ba77860 dart::IsolateMessageHandler::HandleMessage+0x1f3
  pc 0x00005649996ef78a fp 0x00007f821ba778d0 dart::MessageHandler::HandleMessages+0x12a
  pc 0x00005649996ef915 fp 0x00007f821ba77910 dart::MessageHandler::HandleOOBMessages+0x45
  pc 0x000056499999c8aa fp 0x00007f821ba779a0 Dart_HandleServiceMessages+0x11a
  pc 0x00005649996d131d fp 0x00007f821ba779f0 dart::Isolate::PauseEventHandler+0xad
  pc 0x00005649996b0875 fp 0x00007f821ba77b90 dart::Debugger::Pause+0xf5
  pc 0x00005649996b8e82 fp 0x00007f821ba77cd0 dart::Debugger::SignalPausedEvent+0xb2
  pc 0x00005649996b95a4 fp 0x00007f821ba78180 dart::Debugger::PauseBreakpoint+0x364
  pc 0x0000564999791cea fp 0x00007f821ba78770 dart::DRT_BreakpointRuntimeHandler+0x12a
  pc 0x00007f8260f02f73 fp 0x00007f821ba787b0 Unknown symbol
  pc 0x00007f8260f03e22 fp 0x00007f821ba787e8 Unknown symbol
  pc 0x00007f82606a70f3 fp 0x00007f821ba78820 Unknown symbol
  pc 0x00007f8216ce8a64 fp 0x00007f821ba788b0 Unknown symbol
  pc 0x00007f8216ce835f fp 0x00007f821ba78938 Unknown symbol
  pc 0x00007f821653997c fp 0x00007f821ba78990 Unknown symbol
  pc 0x00007f8217affcce fp 0x00007f821ba789e0 Unknown symbol
  pc 0x00007f82177d6c1b fp 0x00007f821ba78a28 Unknown symbol
  pc 0x00007f8217aff3d1 fp 0x00007f821ba78a68 Unknown symbol
  pc 0x00007f821652716d fp 0x00007f821ba78ab8 Unknown symbol
  pc 0x00007f8217aff1ee fp 0x00007f821ba78b08 Unknown symbol
  pc 0x00007f8217aff0d5 fp 0x00007f821ba78b50 Unknown symbol
  pc 0x00007f8216525d6d fp 0x00007f821ba78be0 Unknown symbol
  pc 0x00007f8216525aa3 fp 0x00007f821ba78c28 Unknown symbol
  pc 0x00007f82165378f9 fp 0x00007f821ba78cd0 Unknown symbol
  pc 0x00007f821652fe9f fp 0x00007f821ba78d50 Unknown symbol
  pc 0x00007f821652fb83 fp 0x00007f821ba78d98 Unknown symbol
  pc 0x00007f8216ce8f17 fp 0x00007f821ba78e08 Unknown symbol
  pc 0x00007f8216ce8863 fp 0x00007f821ba78e98 Unknown symbol
  pc 0x00007f8216ce835f fp 0x00007f821ba78f20 Unknown symbol
  pc 0x00007f821652e977 fp 0x00007f821ba78fc0 Unknown symbol
  pc 0x00007f82177a34ae fp 0x00007f821ba79010 Unknown symbol
  pc 0x00007f821651f57e fp 0x00007f821ba79098 Unknown symbol
  pc 0x00007f8217d9322e fp 0x00007f821ba790e8 Unknown symbol
  pc 0x00007f821650bdc6 fp 0x00007f821ba79190 Unknown symbol
  pc 0x00007f82165066ff fp 0x00007f821ba791f0 Unknown symbol
  pc 0x00007f8216c41c4c fp 0x00007f821ba79248 Unknown symbol
  pc 0x00007f82177c6ddb fp 0x00007f821ba79328 Unknown symbol
  pc 0x00007f82606e7ad9 fp 0x00007f821ba79378 Unknown symbol
  pc 0x00007f821a3a8171 fp 0x00007f821ba793f8 Unknown symbol
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba79460 Unknown symbol
  pc 0x00007f821a3a7e83 fp 0x00007f821ba794f8 Unknown symbol
  pc 0x00007f82606e75ed fp 0x00007f821ba79548 Unknown symbol
  pc 0x00007f82606e72d8 fp 0x00007f821ba795a8 Unknown symbol
  pc 0x00007f82606e64e4 fp 0x00007f821ba79628 Unknown symbol
  pc 0x00007f82606e51a1 fp 0x00007f821ba79670 Unknown symbol
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba796b8 Unknown symbol
  pc 0x00007f8260f0913e fp 0x00007f821ba796e8 Unknown symbol
  pc 0x00007f82606e7ad9 fp 0x00007f821ba79738 Unknown symbol
  pc 0x00007f821a3a8171 fp 0x00007f821ba797b8 Unknown symbol
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba79820 Unknown symbol
  pc 0x00007f821a3a7e83 fp 0x00007f821ba798b8 Unknown symbol
  pc 0x00007f82606e75ed fp 0x00007f821ba79908 Unknown symbol
  pc 0x00007f82606e72d8 fp 0x00007f821ba79968 Unknown symbol
  pc 0x00007f82606e64e4 fp 0x00007f821ba799e8 Unknown symbol
  pc 0x00007f82606e51a1 fp 0x00007f821ba79a30 Unknown symbol
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba79a78 Unknown symbol
  pc 0x00007f8260f0913e fp 0x00007f821ba79aa8 Unknown symbol
  pc 0x00007f82606e7ad9 fp 0x00007f821ba79af8 Unknown symbol
  pc 0x00007f821a3a8171 fp 0x00007f821ba79b78 Unknown symbol
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba79be0 Unknown symbol
  pc 0x00007f821a3a7e83 fp 0x00007f821ba79c78 Unknown symbol
  pc 0x00007f82606e75ed fp 0x00007f821ba79cc8 Unknown symbol
  pc 0x00007f82606e72d8 fp 0x00007f821ba79d28 Unknown symbol
  pc 0x00007f82606e64e4 fp 0x00007f821ba79da8 Unknown symbol
  pc 0x00007f82606e51a1 fp 0x00007f821ba79df0 Unknown symbol
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba79e38 Unknown symbol
  pc 0x00007f8260f0913e fp 0x00007f821ba79e68 Unknown symbol
  pc 0x00007f82606e7ad9 fp 0x00007f821ba79eb8 Unknown symbol
  pc 0x00007f821a3a8171 fp 0x00007f821ba79f38 Unknown symbol
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba79fa0 Unknown symbol
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7a038 Unknown symbol
  pc 0x00007f82606e75ed fp 0x00007f821ba7a088 Unknown symbol
  pc 0x00007f82606e72d8 fp 0x00007f821ba7a0e8 Unknown symbol
  pc 0x00007f82606e64e4 fp 0x00007f821ba7a168 Unknown symbol
  pc 0x00007f82606e51a1 fp 0x00007f821ba7a1b0 Unknown symbol
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7a1f8 Unknown symbol
  pc 0x00007f8260f0913e fp 0x00007f821ba7a228 Unknown symbol
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7a278 Unknown symbol
  pc 0x00007f821a3a8171 fp 0x00007f821ba7a2f8 Unknown symbol
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7a360 Unknown symbol
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7a3f8 Unknown symbol
  pc 0x00007f82606e75ed fp 0x00007f821ba7a448 Unknown symbol
  pc 0x00007f82606e72d8 fp 0x00007f821ba7a4a8 Unknown symbol
  pc 0x00007f82606e64e4 fp 0x00007f821ba7a528 Unknown symbol
  pc 0x00007f82606e51a1 fp 0x00007f821ba7a570 Unknown symbol
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7a5b8 Unknown symbol
  pc 0x00007f8260f0913e fp 0x00007f821ba7a5e8 Unknown symbol
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7a638 Unknown symbol
  pc 0x00007f821a3a8171 fp 0x00007f821ba7a6b8 Unknown symbol
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7a720 Unknown symbol
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7a7b8 Unknown symbol
  pc 0x00007f82606e75ed fp 0x00007f821ba7a808 Unknown symbol
  pc 0x00007f82606e72d8 fp 0x00007f821ba7a868 Unknown symbol
  pc 0x00007f82606e64e4 fp 0x00007f821ba7a8e8 Unknown symbol
  pc 0x00007f82606e51a1 fp 0x00007f821ba7a930 Unknown symbol
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7a978 Unknown symbol
  pc 0x00007f8260f0913e fp 0x00007f821ba7a9a8 Unknown symbol
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7a9f8 Unknown symbol
  pc 0x00007f821a3a8171 fp 0x00007f821ba7aa78 Unknown symbol
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7aae0 Unknown symbol
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7ab78 Unknown symbol
  pc 0x00007f82606e75ed fp 0x00007f821ba7abc8 Unknown symbol
  pc 0x00007f82606e72d8 fp 0x00007f821ba7ac28 Unknown symbol
  pc 0x00007f82606e64e4 fp 0x00007f821ba7aca8 Unknown symbol
  pc 0x00007f82606e51a1 fp 0x00007f821ba7acf0 Unknown symbol
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7ad38 Unknown symbol
  pc 0x00007f8260f0913e fp 0x00007f821ba7ad68 Unknown symbol
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7adb8 Unknown symbol
  pc 0x00007f821a3a8171 fp 0x00007f821ba7ae38 Unknown symbol
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7aea0 Unknown symbol
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7af38 Unknown symbol
  pc 0x00007f82606e75ed fp 0x00007f821ba7af88 Unknown symbol
  pc 0x00007f82606e72d8 fp 0x00007f821ba7afe8 Unknown symbol
  pc 0x00007f82606e64e4 fp 0x00007f821ba7b068 Unknown symbol
  pc 0x00007f82606e51a1 fp 0x00007f821ba7b0b0 Unknown symbol
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7b0f8 Unknown symbol
  pc 0x00007f8260f0913e fp 0x00007f821ba7b128 Unknown symbol
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7b178 Unknown symbol
  pc 0x00007f821a3a8171 fp 0x00007f821ba7b1f8 Unknown symbol
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7b260 Unknown symbol
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7b2f8 Unknown symbol
  pc 0x00007f82606e75ed fp 0x00007f821ba7b348 Unknown symbol
  pc 0x00007f82606e72d8 fp 0x00007f821ba7b3a8 Unknown symbol
  pc 0x00007f82606e64e4 fp 0x00007f821ba7b428 Unknown symbol
  pc 0x00007f82606e51a1 fp 0x00007f821ba7b470 Unknown symbol
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7b4b8 Unknown symbol
  pc 0x00007f8260f0913e fp 0x00007f821ba7b4e8 Unknown symbol
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7b538 Unknown symbol
  pc 0x00007f821a3a8171 fp 0x00007f821ba7b5b8 Unknown symbol
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7b620 Unknown symbol
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7b6b8 Unknown symbol
  pc 0x00007f82606e75ed fp 0x00007f821ba7b708 Unknown symbol
  pc 0x00007f82606e72d8 fp 0x00007f821ba7b768 Unknown symbol
  pc 0x00007f82606e64e4 fp 0x00007f821ba7b7e8 Unknown symbol
  pc 0x00007f82606e51a1 fp 0x00007f821ba7b830 Unknown symbol
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7b878 Unknown symbol
  pc 0x00007f8260f0913e fp 0x00007f821ba7b8a8 Unknown symbol
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7b8f8 Unknown symbol
  pc 0x00007f821a3a8171 fp 0x00007f821ba7b978 Unknown symbol
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7b9e0 Unknown symbol
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7ba78 Unknown symbol
  pc 0x00007f82606e75ed fp 0x00007f821ba7bac8 Unknown symbol
  pc 0x00007f82606e72d8 fp 0x00007f821ba7bb28 Unknown symbol
  pc 0x00007f82606e64e4 fp 0x00007f821ba7bba8 Unknown symbol
  pc 0x00007f82606e51a1 fp 0x00007f821ba7bbf0 Unknown symbol
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7bc38 Unknown symbol
  pc 0x00007f8260f0913e fp 0x00007f821ba7bc68 Unknown symbol
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7bcb8 Unknown symbol
  pc 0x00007f821a3a8171 fp 0x00007f821ba7bd38 Unknown symbol
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7bda0 Unknown symbol
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7be38 Unknown symbol
  pc 0x00007f82606e75ed fp 0x00007f821ba7be88 Unknown symbol
  pc 0x00007f82606e72d8 fp 0x00007f821ba7bee8 Unknown symbol
  pc 0x00007f82606e64e4 fp 0x00007f821ba7bf68 Unknown symbol
  pc 0x00007f82606e51a1 fp 0x00007f821ba7bfb0 Unknown symbol
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7bff8 Unknown symbol
  pc 0x00007f8260f0913e fp 0x00007f821ba7c028 Unknown symbol
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7c078 Unknown symbol
  pc 0x00007f821a3a8171 fp 0x00007f821ba7c0f8 Unknown symbol
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7c160 Unknown symbol
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7c1f8 Unknown symbol
  pc 0x00007f82606e75ed fp 0x00007f821ba7c248 Unknown symbol
  pc 0x00007f82606e72d8 fp 0x00007f821ba7c2a8 Unknown symbol
  pc 0x00007f82606e64e4 fp 0x00007f821ba7c328 Unknown symbol
  pc 0x00007f82606e51a1 fp 0x00007f821ba7c370 Unknown symbol
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7c3b8 Unknown symbol
  pc 0x00007f8260f0913e fp 0x00007f821ba7c3e8 Unknown symbol
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7c438 Unknown symbol
  pc 0x00007f821a3a8171 fp 0x00007f821ba7c4b8 Unknown symbol
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7c520 Unknown symbol
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7c5b8 Unknown symbol
  pc 0x00007f82606e75ed fp 0x00007f821ba7c608 Unknown symbol
  pc 0x00007f82606e72d8 fp 0x00007f821ba7c668 Unknown symbol
  pc 0x00007f82606e64e4 fp 0x00007f821ba7c6e8 Unknown symbol
  pc 0x00007f82606e51a1 fp 0x00007f821ba7c730 Unknown symbol
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7c778 Unknown symbol
  pc 0x00007f8260f0913e fp 0x00007f821ba7c7a8 Unknown symbol
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7c7f8 Unknown symbol
  pc 0x00007f821a3a8171 fp 0x00007f821ba7c878 Unknown symbol
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7c8e0 Unknown symbol
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7c978 Unknown symbol
  pc 0x00007f82606e75ed fp 0x00007f821ba7c9c8 Unknown symbol
  pc 0x00007f82606e72d8 fp 0x00007f821ba7ca28 Unknown symbol
  pc 0x00007f82606e64e4 fp 0x00007f821ba7caa8 Unknown symbol
  pc 0x00007f82606e51a1 fp 0x00007f821ba7caf0 Unknown symbol
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7cb38 Unknown symbol
  pc 0x00007f8260f0913e fp 0x00007f821ba7cb68 Unknown symbol
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7cbb8 Unknown symbol
  pc 0x00007f821a3a8171 fp 0x00007f821ba7cc38 Unknown symbol
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7cca0 Unknown symbol
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7cd38 Unknown symbol
  pc 0x00007f82606e75ed fp 0x00007f821ba7cd88 Unknown symbol
  pc 0x00007f82606e72d8 fp 0x00007f821ba7cde8 Unknown symbol
  pc 0x00007f82606e64e4 fp 0x00007f821ba7ce68 Unknown symbol
  pc 0x00007f82606e51a1 fp 0x00007f821ba7ceb0 Unknown symbol
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7cef8 Unknown symbol
  pc 0x00007f8260f0913e fp 0x00007f821ba7cf28 Unknown symbol
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7cf78 Unknown symbol
  pc 0x00007f821a3a8171 fp 0x00007f821ba7cff8 Unknown symbol
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7d060 Unknown symbol
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7d0f8 Unknown symbol
  pc 0x00007f821a3ce206 fp 0x00007f821ba7d148 Unknown symbol
  pc 0x00007f821a3a094a fp 0x00007f821ba7d1c0 Unknown symbol
  pc 0x00007f821a3a0694 fp 0x00007f821ba7d220 Unknown symbol
  pc 0x00007f821a39ffc0 fp 0x00007f821ba7d2b0 Unknown symbol
  pc 0x00007f821a3a6a2b fp 0x00007f821ba7d320 Unknown symbol
  pc 0x00007f821a3a6917 fp 0x00007f821ba7d360 Unknown symbol
  pc 0x00007f82606e4cd7 fp 0x00007f821ba7d3a8 Unknown symbol
  pc 0x00007f82606e4942 fp 0x00007f821ba7d3e8 Unknown symbol
  pc 0x00007f82606e4863 fp 0x00007f821ba7d410 Unknown symbol
  pc 0x00007f82606de5a9 fp 0x00007f821ba7d450 Unknown symbol
  pc 0x00007f82606e03c7 fp 0x00007f821ba7d4d0 Unknown symbol
  pc 0x00007f82606de933 fp 0x00007f821ba7d508 Unknown symbol
  pc 0x00007f82606de696 fp 0x00007f821ba7d538 Unknown symbol
  pc 0x00007f82606a9875 fp 0x00007f821ba7d5a0 Unknown symbol
  pc 0x00007f82606a87c0 fp 0x00007f821ba7d5f8 Unknown symbol
  pc 0x00007f8260f03426 fp 0x00007f821ba7d670 Unknown symbol
  pc 0x00005649996adb35 fp 0x00007f821ba7d6d0 dart::DartEntry::InvokeFunction+0x165
  pc 0x00005649996af44d fp 0x00007f821ba7d710 dart::DartLibraryCalls::HandleMessage+0x11d
  pc 0x00005649996cccdd fp 0x00007f821ba7dca0 dart::IsolateMessageHandler::HandleMessage+0x30d
  pc 0x00005649996ef78a fp 0x00007f821ba7dd10 dart::MessageHandler::HandleMessages+0x12a
  pc 0x00005649996efb7c fp 0x00007f821ba7dd60 dart::MessageHandler::TaskCallback+0x1ec
  pc 0x00005649997c51c7 fp 0x00007f821ba7dde0 dart::ThreadPool::WorkerLoop+0x127
  pc 0x00005649997c5422 fp 0x00007f821ba7de10 dart::ThreadPool::Worker::Main+0x72
  pc 0x0000564999777799 fp 0x00007f821ba7ded0 dart::ThreadStart+0xd9
-- End of DumpStackTrace
  pc 0x0000000000000000 fp 0x00007f821ba787b0 sp 0x0000000000000000 [Stub] CallToRuntime
  pc 0x00007f8260f03e22 fp 0x00007f821ba787e8 sp 0x00007f821ba787c0 [Stub] ICCallBreakpoint
  pc 0x00007f82606a70f3 fp 0x00007f821ba78820 sp 0x00007f821ba787f8 [Unoptimized] _ResolverVisitor&ThrowingAstVisitor&ErrorDetectionHelpers&TypeAnalyzer&[email protected]
  pc 0x00007f8216ce8a64 fp 0x00007f821ba788b0 sp 0x00007f821ba78830 [Unoptimized] _ResolverVisitor&ThrowingAstVisitor&ErrorDetectionHelpers&[email protected]
  pc 0x00007f8216ce835f fp 0x00007f821ba78938 sp 0x00007f821ba788c0 [Unoptimized] ResolverVisitor.analyzeExpression
  pc 0x00007f821653997c fp 0x00007f821ba78990 sp 0x00007f821ba78948 [Unoptimized] ResolverVisitor.visitExpressionStatement
  pc 0x00007f8217affcce fp 0x00007f821ba789e0 sp 0x00007f821ba789a0 [Unoptimized] ExpressionStatementImpl.accept
  pc 0x00007f82177d6c1b fp 0x00007f821ba78a28 sp 0x00007f821ba789f0 [Optimized] NodeListImpl.accept
  pc 0x00007f8217aff3d1 fp 0x00007f821ba78a68 sp 0x00007f821ba78a38 [Unoptimized] BlockImpl.visitChildren
  pc 0x00007f821652716d fp 0x00007f821ba78ab8 sp 0x00007f821ba78a78 [Unoptimized] ResolverVisitor.visitBlock
  pc 0x00007f8217aff1ee fp 0x00007f821ba78b08 sp 0x00007f821ba78ac8 [Unoptimized] BlockImpl.accept
  pc 0x00007f8217aff0d5 fp 0x00007f821ba78b50 sp 0x00007f821ba78b18 [Unoptimized] BlockFunctionBodyImpl.visitChildren
  pc 0x00007f8216525d6d fp 0x00007f821ba78be0 sp 0x00007f821ba78b60 [Unoptimized] ResolverVisitor.visitBlockFunctionBody
  pc 0x00007f8216525aa3 fp 0x00007f821ba78c28 sp 0x00007f821ba78bf0 [Unoptimized] BlockFunctionBodyImpl.resolve
  pc 0x00007f82165378f9 fp 0x00007f821ba78cd0 sp 0x00007f821ba78c38 [Unoptimized] FunctionExpressionResolver.resolve
  pc 0x00007f821652fe9f fp 0x00007f821ba78d50 sp 0x00007f821ba78ce0 [Unoptimized] ResolverVisitor.visitFunctionExpression
  pc 0x00007f821652fb83 fp 0x00007f821ba78d98 sp 0x00007f821ba78d60 [Unoptimized] FunctionExpressionImpl.resolveExpression
  pc 0x00007f8216ce8f17 fp 0x00007f821ba78e08 sp 0x00007f821ba78da8 [Unoptimized] ResolverVisitor.dispatchExpression
  pc 0x00007f8216ce8863 fp 0x00007f821ba78e98 sp 0x00007f821ba78e18 [Unoptimized] _ResolverVisitor&ThrowingAstVisitor&ErrorDetectionHelpers&[email protected]
  pc 0x00007f8216ce835f fp 0x00007f821ba78f20 sp 0x00007f821ba78ea8 [Unoptimized] ResolverVisitor.analyzeExpression
  pc 0x00007f821652e977 fp 0x00007f821ba78fc0 sp 0x00007f821ba78f30 [Unoptimized] ResolverVisitor.visitFunctionDeclaration
  pc 0x00007f82177a34ae fp 0x00007f821ba79010 sp 0x00007f821ba78fd0 [Unoptimized] FunctionDeclarationImpl.accept
  pc 0x00007f821651f57e fp 0x00007f821ba79098 sp 0x00007f821ba79020 [Unoptimized] ResolverVisitor.visitCompilationUnit
  pc 0x00007f8217d9322e fp 0x00007f821ba790e8 sp 0x00007f821ba790a8 [Unoptimized] CompilationUnitImpl.accept
  pc 0x00007f821650bdc6 fp 0x00007f821ba79190 sp 0x00007f821ba790f8 [Unoptimized] LibraryAnalyzer._resolveFile@735458860
  pc 0x00007f82165066ff fp 0x00007f821ba791f0 sp 0x00007f821ba791a0 [Unoptimized] LibraryAnalyzer._parseAndResolve@735458860
  pc 0x00007f8216c41c4c fp 0x00007f821ba79248 sp 0x00007f821ba79200 [Unoptimized] LibraryAnalyzer.analyze
  pc 0x00007f82177c6ddb fp 0x00007f821ba79328 sp 0x00007f821ba79258 [Unoptimized] AnalysisDriver._analyzeFileImpl@35237046.<anonymous closure>
  pc 0x00007f82606e7ad9 fp 0x00007f821ba79378 sp 0x00007f821ba79338 [Unoptimized] _SuspendState@[email protected]
  pc 0x00007f821a3a8171 fp 0x00007f821ba793f8 sp 0x00007f821ba79388 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba79460 sp 0x00007f821ba79408 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7e83 fp 0x00007f821ba794f8 sp 0x00007f821ba79470 [Unoptimized] [email protected]
  pc 0x00007f82606e75ed fp 0x00007f821ba79548 sp 0x00007f821ba79508 [Unoptimized] [email protected]
  pc 0x00007f82606e72d8 fp 0x00007f821ba795a8 sp 0x00007f821ba79558 [Unoptimized] _Future@[email protected]
  pc 0x00007f82606e64e4 fp 0x00007f821ba79628 sp 0x00007f821ba795b8 [Unoptimized] _Future@5048458._propagateToListeners@5048458
  pc 0x00007f82606e51a1 fp 0x00007f821ba79670 sp 0x00007f821ba79638 [Unoptimized] _Future@5048458._completeWithValue@5048458
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba796b8 sp 0x00007f821ba79680 [Unoptimized] _SuspendState@5048458._returnAsync@5048458
  pc 0x00007f8260f0913e fp 0x00007f821ba796e8 sp 0x00007f821ba796c8 [Stub] ReturnAsync
  pc 0x00007f82606e7ad9 fp 0x00007f821ba79738 sp 0x00007f821ba796f8 [Unoptimized] _SuspendState@[email protected]
  pc 0x00007f821a3a8171 fp 0x00007f821ba797b8 sp 0x00007f821ba79748 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba79820 sp 0x00007f821ba797c8 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7e83 fp 0x00007f821ba798b8 sp 0x00007f821ba79830 [Unoptimized] [email protected]
  pc 0x00007f82606e75ed fp 0x00007f821ba79908 sp 0x00007f821ba798c8 [Unoptimized] [email protected]
  pc 0x00007f82606e72d8 fp 0x00007f821ba79968 sp 0x00007f821ba79918 [Unoptimized] _Future@[email protected]
  pc 0x00007f82606e64e4 fp 0x00007f821ba799e8 sp 0x00007f821ba79978 [Unoptimized] _Future@5048458._propagateToListeners@5048458
  pc 0x00007f82606e51a1 fp 0x00007f821ba79a30 sp 0x00007f821ba799f8 [Unoptimized] _Future@5048458._completeWithValue@5048458
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba79a78 sp 0x00007f821ba79a40 [Unoptimized] _SuspendState@5048458._returnAsync@5048458
  pc 0x00007f8260f0913e fp 0x00007f821ba79aa8 sp 0x00007f821ba79a88 [Stub] ReturnAsync
  pc 0x00007f82606e7ad9 fp 0x00007f821ba79af8 sp 0x00007f821ba79ab8 [Unoptimized] _SuspendState@[email protected]
  pc 0x00007f821a3a8171 fp 0x00007f821ba79b78 sp 0x00007f821ba79b08 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba79be0 sp 0x00007f821ba79b88 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7e83 fp 0x00007f821ba79c78 sp 0x00007f821ba79bf0 [Unoptimized] [email protected]
  pc 0x00007f82606e75ed fp 0x00007f821ba79cc8 sp 0x00007f821ba79c88 [Unoptimized] [email protected]
  pc 0x00007f82606e72d8 fp 0x00007f821ba79d28 sp 0x00007f821ba79cd8 [Unoptimized] _Future@[email protected]
  pc 0x00007f82606e64e4 fp 0x00007f821ba79da8 sp 0x00007f821ba79d38 [Unoptimized] _Future@5048458._propagateToListeners@5048458
  pc 0x00007f82606e51a1 fp 0x00007f821ba79df0 sp 0x00007f821ba79db8 [Unoptimized] _Future@5048458._completeWithValue@5048458
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba79e38 sp 0x00007f821ba79e00 [Unoptimized] _SuspendState@5048458._returnAsync@5048458
  pc 0x00007f8260f0913e fp 0x00007f821ba79e68 sp 0x00007f821ba79e48 [Stub] ReturnAsync
  pc 0x00007f82606e7ad9 fp 0x00007f821ba79eb8 sp 0x00007f821ba79e78 [Unoptimized] _SuspendState@[email protected]
  pc 0x00007f821a3a8171 fp 0x00007f821ba79f38 sp 0x00007f821ba79ec8 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba79fa0 sp 0x00007f821ba79f48 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7a038 sp 0x00007f821ba79fb0 [Unoptimized] [email protected]
  pc 0x00007f82606e75ed fp 0x00007f821ba7a088 sp 0x00007f821ba7a048 [Unoptimized] [email protected]
  pc 0x00007f82606e72d8 fp 0x00007f821ba7a0e8 sp 0x00007f821ba7a098 [Unoptimized] _Future@[email protected]
  pc 0x00007f82606e64e4 fp 0x00007f821ba7a168 sp 0x00007f821ba7a0f8 [Unoptimized] _Future@5048458._propagateToListeners@5048458
  pc 0x00007f82606e51a1 fp 0x00007f821ba7a1b0 sp 0x00007f821ba7a178 [Unoptimized] _Future@5048458._completeWithValue@5048458
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7a1f8 sp 0x00007f821ba7a1c0 [Unoptimized] _SuspendState@5048458._returnAsync@5048458
  pc 0x00007f8260f0913e fp 0x00007f821ba7a228 sp 0x00007f821ba7a208 [Stub] ReturnAsync
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7a278 sp 0x00007f821ba7a238 [Unoptimized] _SuspendState@[email protected]
  pc 0x00007f821a3a8171 fp 0x00007f821ba7a2f8 sp 0x00007f821ba7a288 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7a360 sp 0x00007f821ba7a308 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7a3f8 sp 0x00007f821ba7a370 [Unoptimized] [email protected]
  pc 0x00007f82606e75ed fp 0x00007f821ba7a448 sp 0x00007f821ba7a408 [Unoptimized] [email protected]
  pc 0x00007f82606e72d8 fp 0x00007f821ba7a4a8 sp 0x00007f821ba7a458 [Unoptimized] _Future@[email protected]
  pc 0x00007f82606e64e4 fp 0x00007f821ba7a528 sp 0x00007f821ba7a4b8 [Unoptimized] _Future@5048458._propagateToListeners@5048458
  pc 0x00007f82606e51a1 fp 0x00007f821ba7a570 sp 0x00007f821ba7a538 [Unoptimized] _Future@5048458._completeWithValue@5048458
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7a5b8 sp 0x00007f821ba7a580 [Unoptimized] _SuspendState@5048458._returnAsync@5048458
  pc 0x00007f8260f0913e fp 0x00007f821ba7a5e8 sp 0x00007f821ba7a5c8 [Stub] ReturnAsync
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7a638 sp 0x00007f821ba7a5f8 [Unoptimized] _SuspendState@[email protected]
  pc 0x00007f821a3a8171 fp 0x00007f821ba7a6b8 sp 0x00007f821ba7a648 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7a720 sp 0x00007f821ba7a6c8 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7a7b8 sp 0x00007f821ba7a730 [Unoptimized] [email protected]
  pc 0x00007f82606e75ed fp 0x00007f821ba7a808 sp 0x00007f821ba7a7c8 [Unoptimized] [email protected]
  pc 0x00007f82606e72d8 fp 0x00007f821ba7a868 sp 0x00007f821ba7a818 [Unoptimized] _Future@[email protected]
  pc 0x00007f82606e64e4 fp 0x00007f821ba7a8e8 sp 0x00007f821ba7a878 [Unoptimized] _Future@5048458._propagateToListeners@5048458
  pc 0x00007f82606e51a1 fp 0x00007f821ba7a930 sp 0x00007f821ba7a8f8 [Unoptimized] _Future@5048458._completeWithValue@5048458
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7a978 sp 0x00007f821ba7a940 [Unoptimized] _SuspendState@5048458._returnAsync@5048458
  pc 0x00007f8260f0913e fp 0x00007f821ba7a9a8 sp 0x00007f821ba7a988 [Stub] ReturnAsync
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7a9f8 sp 0x00007f821ba7a9b8 [Unoptimized] _SuspendState@[email protected]
  pc 0x00007f821a3a8171 fp 0x00007f821ba7aa78 sp 0x00007f821ba7aa08 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7aae0 sp 0x00007f821ba7aa88 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7ab78 sp 0x00007f821ba7aaf0 [Unoptimized] [email protected]
  pc 0x00007f82606e75ed fp 0x00007f821ba7abc8 sp 0x00007f821ba7ab88 [Unoptimized] [email protected]
  pc 0x00007f82606e72d8 fp 0x00007f821ba7ac28 sp 0x00007f821ba7abd8 [Unoptimized] _Future@[email protected]
  pc 0x00007f82606e64e4 fp 0x00007f821ba7aca8 sp 0x00007f821ba7ac38 [Unoptimized] _Future@5048458._propagateToListeners@5048458
  pc 0x00007f82606e51a1 fp 0x00007f821ba7acf0 sp 0x00007f821ba7acb8 [Unoptimized] _Future@5048458._completeWithValue@5048458
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7ad38 sp 0x00007f821ba7ad00 [Unoptimized] _SuspendState@5048458._returnAsync@5048458
  pc 0x00007f8260f0913e fp 0x00007f821ba7ad68 sp 0x00007f821ba7ad48 [Stub] ReturnAsync
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7adb8 sp 0x00007f821ba7ad78 [Unoptimized] _SuspendState@[email protected]
  pc 0x00007f821a3a8171 fp 0x00007f821ba7ae38 sp 0x00007f821ba7adc8 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7aea0 sp 0x00007f821ba7ae48 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7af38 sp 0x00007f821ba7aeb0 [Unoptimized] [email protected]
  pc 0x00007f82606e75ed fp 0x00007f821ba7af88 sp 0x00007f821ba7af48 [Unoptimized] [email protected]
  pc 0x00007f82606e72d8 fp 0x00007f821ba7afe8 sp 0x00007f821ba7af98 [Unoptimized] _Future@[email protected]
  pc 0x00007f82606e64e4 fp 0x00007f821ba7b068 sp 0x00007f821ba7aff8 [Unoptimized] _Future@5048458._propagateToListeners@5048458
  pc 0x00007f82606e51a1 fp 0x00007f821ba7b0b0 sp 0x00007f821ba7b078 [Unoptimized] _Future@5048458._completeWithValue@5048458
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7b0f8 sp 0x00007f821ba7b0c0 [Unoptimized] _SuspendState@5048458._returnAsync@5048458
  pc 0x00007f8260f0913e fp 0x00007f821ba7b128 sp 0x00007f821ba7b108 [Stub] ReturnAsync
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7b178 sp 0x00007f821ba7b138 [Unoptimized] _SuspendState@[email protected]
  pc 0x00007f821a3a8171 fp 0x00007f821ba7b1f8 sp 0x00007f821ba7b188 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7b260 sp 0x00007f821ba7b208 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7b2f8 sp 0x00007f821ba7b270 [Unoptimized] [email protected]
  pc 0x00007f82606e75ed fp 0x00007f821ba7b348 sp 0x00007f821ba7b308 [Unoptimized] [email protected]
  pc 0x00007f82606e72d8 fp 0x00007f821ba7b3a8 sp 0x00007f821ba7b358 [Unoptimized] _Future@[email protected]
  pc 0x00007f82606e64e4 fp 0x00007f821ba7b428 sp 0x00007f821ba7b3b8 [Unoptimized] _Future@5048458._propagateToListeners@5048458
  pc 0x00007f82606e51a1 fp 0x00007f821ba7b470 sp 0x00007f821ba7b438 [Unoptimized] _Future@5048458._completeWithValue@5048458
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7b4b8 sp 0x00007f821ba7b480 [Unoptimized] _SuspendState@5048458._returnAsync@5048458
  pc 0x00007f8260f0913e fp 0x00007f821ba7b4e8 sp 0x00007f821ba7b4c8 [Stub] ReturnAsync
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7b538 sp 0x00007f821ba7b4f8 [Unoptimized] _SuspendState@[email protected]
  pc 0x00007f821a3a8171 fp 0x00007f821ba7b5b8 sp 0x00007f821ba7b548 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7b620 sp 0x00007f821ba7b5c8 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7b6b8 sp 0x00007f821ba7b630 [Unoptimized] [email protected]
  pc 0x00007f82606e75ed fp 0x00007f821ba7b708 sp 0x00007f821ba7b6c8 [Unoptimized] [email protected]
  pc 0x00007f82606e72d8 fp 0x00007f821ba7b768 sp 0x00007f821ba7b718 [Unoptimized] _Future@[email protected]
  pc 0x00007f82606e64e4 fp 0x00007f821ba7b7e8 sp 0x00007f821ba7b778 [Unoptimized] _Future@5048458._propagateToListeners@5048458
  pc 0x00007f82606e51a1 fp 0x00007f821ba7b830 sp 0x00007f821ba7b7f8 [Unoptimized] _Future@5048458._completeWithValue@5048458
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7b878 sp 0x00007f821ba7b840 [Unoptimized] _SuspendState@5048458._returnAsync@5048458
  pc 0x00007f8260f0913e fp 0x00007f821ba7b8a8 sp 0x00007f821ba7b888 [Stub] ReturnAsync
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7b8f8 sp 0x00007f821ba7b8b8 [Unoptimized] _SuspendState@[email protected]
  pc 0x00007f821a3a8171 fp 0x00007f821ba7b978 sp 0x00007f821ba7b908 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7b9e0 sp 0x00007f821ba7b988 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7ba78 sp 0x00007f821ba7b9f0 [Unoptimized] [email protected]
  pc 0x00007f82606e75ed fp 0x00007f821ba7bac8 sp 0x00007f821ba7ba88 [Unoptimized] [email protected]
  pc 0x00007f82606e72d8 fp 0x00007f821ba7bb28 sp 0x00007f821ba7bad8 [Unoptimized] _Future@[email protected]
  pc 0x00007f82606e64e4 fp 0x00007f821ba7bba8 sp 0x00007f821ba7bb38 [Unoptimized] _Future@5048458._propagateToListeners@5048458
  pc 0x00007f82606e51a1 fp 0x00007f821ba7bbf0 sp 0x00007f821ba7bbb8 [Unoptimized] _Future@5048458._completeWithValue@5048458
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7bc38 sp 0x00007f821ba7bc00 [Unoptimized] _SuspendState@5048458._returnAsync@5048458
  pc 0x00007f8260f0913e fp 0x00007f821ba7bc68 sp 0x00007f821ba7bc48 [Stub] ReturnAsync
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7bcb8 sp 0x00007f821ba7bc78 [Unoptimized] _SuspendState@[email protected]
  pc 0x00007f821a3a8171 fp 0x00007f821ba7bd38 sp 0x00007f821ba7bcc8 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7bda0 sp 0x00007f821ba7bd48 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7be38 sp 0x00007f821ba7bdb0 [Unoptimized] [email protected]
  pc 0x00007f82606e75ed fp 0x00007f821ba7be88 sp 0x00007f821ba7be48 [Unoptimized] [email protected]
  pc 0x00007f82606e72d8 fp 0x00007f821ba7bee8 sp 0x00007f821ba7be98 [Unoptimized] _Future@[email protected]
  pc 0x00007f82606e64e4 fp 0x00007f821ba7bf68 sp 0x00007f821ba7bef8 [Unoptimized] _Future@5048458._propagateToListeners@5048458
  pc 0x00007f82606e51a1 fp 0x00007f821ba7bfb0 sp 0x00007f821ba7bf78 [Unoptimized] _Future@5048458._completeWithValue@5048458
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7bff8 sp 0x00007f821ba7bfc0 [Unoptimized] _SuspendState@5048458._returnAsync@5048458
  pc 0x00007f8260f0913e fp 0x00007f821ba7c028 sp 0x00007f821ba7c008 [Stub] ReturnAsync
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7c078 sp 0x00007f821ba7c038 [Unoptimized] _SuspendState@[email protected]
  pc 0x00007f821a3a8171 fp 0x00007f821ba7c0f8 sp 0x00007f821ba7c088 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7c160 sp 0x00007f821ba7c108 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7c1f8 sp 0x00007f821ba7c170 [Unoptimized] [email protected]
  pc 0x00007f82606e75ed fp 0x00007f821ba7c248 sp 0x00007f821ba7c208 [Unoptimized] [email protected]
  pc 0x00007f82606e72d8 fp 0x00007f821ba7c2a8 sp 0x00007f821ba7c258 [Unoptimized] _Future@[email protected]
  pc 0x00007f82606e64e4 fp 0x00007f821ba7c328 sp 0x00007f821ba7c2b8 [Unoptimized] _Future@5048458._propagateToListeners@5048458
  pc 0x00007f82606e51a1 fp 0x00007f821ba7c370 sp 0x00007f821ba7c338 [Unoptimized] _Future@5048458._completeWithValue@5048458
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7c3b8 sp 0x00007f821ba7c380 [Unoptimized] _SuspendState@5048458._returnAsync@5048458
  pc 0x00007f8260f0913e fp 0x00007f821ba7c3e8 sp 0x00007f821ba7c3c8 [Stub] ReturnAsync
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7c438 sp 0x00007f821ba7c3f8 [Unoptimized] _SuspendState@[email protected]
  pc 0x00007f821a3a8171 fp 0x00007f821ba7c4b8 sp 0x00007f821ba7c448 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7c520 sp 0x00007f821ba7c4c8 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7c5b8 sp 0x00007f821ba7c530 [Unoptimized] [email protected]
  pc 0x00007f82606e75ed fp 0x00007f821ba7c608 sp 0x00007f821ba7c5c8 [Unoptimized] [email protected]
  pc 0x00007f82606e72d8 fp 0x00007f821ba7c668 sp 0x00007f821ba7c618 [Unoptimized] _Future@[email protected]
  pc 0x00007f82606e64e4 fp 0x00007f821ba7c6e8 sp 0x00007f821ba7c678 [Unoptimized] _Future@5048458._propagateToListeners@5048458
  pc 0x00007f82606e51a1 fp 0x00007f821ba7c730 sp 0x00007f821ba7c6f8 [Unoptimized] _Future@5048458._completeWithValue@5048458
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7c778 sp 0x00007f821ba7c740 [Unoptimized] _SuspendState@5048458._returnAsync@5048458
  pc 0x00007f8260f0913e fp 0x00007f821ba7c7a8 sp 0x00007f821ba7c788 [Stub] ReturnAsync
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7c7f8 sp 0x00007f821ba7c7b8 [Unoptimized] _SuspendState@[email protected]
  pc 0x00007f821a3a8171 fp 0x00007f821ba7c878 sp 0x00007f821ba7c808 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7c8e0 sp 0x00007f821ba7c888 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7c978 sp 0x00007f821ba7c8f0 [Unoptimized] [email protected]
  pc 0x00007f82606e75ed fp 0x00007f821ba7c9c8 sp 0x00007f821ba7c988 [Unoptimized] [email protected]
  pc 0x00007f82606e72d8 fp 0x00007f821ba7ca28 sp 0x00007f821ba7c9d8 [Unoptimized] _Future@[email protected]
  pc 0x00007f82606e64e4 fp 0x00007f821ba7caa8 sp 0x00007f821ba7ca38 [Unoptimized] _Future@5048458._propagateToListeners@5048458
  pc 0x00007f82606e51a1 fp 0x00007f821ba7caf0 sp 0x00007f821ba7cab8 [Unoptimized] _Future@5048458._completeWithValue@5048458
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7cb38 sp 0x00007f821ba7cb00 [Unoptimized] _SuspendState@5048458._returnAsync@5048458
  pc 0x00007f8260f0913e fp 0x00007f821ba7cb68 sp 0x00007f821ba7cb48 [Stub] ReturnAsync
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7cbb8 sp 0x00007f821ba7cb78 [Unoptimized] _SuspendState@[email protected]
  pc 0x00007f821a3a8171 fp 0x00007f821ba7cc38 sp 0x00007f821ba7cbc8 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7cca0 sp 0x00007f821ba7cc48 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7cd38 sp 0x00007f821ba7ccb0 [Unoptimized] [email protected]
  pc 0x00007f82606e75ed fp 0x00007f821ba7cd88 sp 0x00007f821ba7cd48 [Unoptimized] [email protected]
  pc 0x00007f82606e72d8 fp 0x00007f821ba7cde8 sp 0x00007f821ba7cd98 [Unoptimized] _Future@[email protected]
  pc 0x00007f82606e64e4 fp 0x00007f821ba7ce68 sp 0x00007f821ba7cdf8 [Unoptimized] _Future@5048458._propagateToListeners@5048458
  pc 0x00007f82606e51a1 fp 0x00007f821ba7ceb0 sp 0x00007f821ba7ce78 [Unoptimized] _Future@5048458._completeWithValue@5048458
  pc 0x00007f821a3ce3e3 fp 0x00007f821ba7cef8 sp 0x00007f821ba7cec0 [Unoptimized] _SuspendState@5048458._returnAsync@5048458
  pc 0x00007f8260f0913e fp 0x00007f821ba7cf28 sp 0x00007f821ba7cf08 [Stub] ReturnAsync
  pc 0x00007f82606e7ad9 fp 0x00007f821ba7cf78 sp 0x00007f821ba7cf38 [Unoptimized] _SuspendState@[email protected]
  pc 0x00007f821a3a8171 fp 0x00007f821ba7cff8 sp 0x00007f821ba7cf88 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7ff7 fp 0x00007f821ba7d060 sp 0x00007f821ba7d008 [Unoptimized] _rootRunUnary@5048458
  pc 0x00007f821a3a7e83 fp 0x00007f821ba7d0f8 sp 0x00007f821ba7d070 [Unoptimized] [email protected]
  pc 0x00007f821a3ce206 fp 0x00007f821ba7d148 sp 0x00007f821ba7d108 [Unoptimized] _SuspendState@[email protected]
  pc 0x00007f821a3a094a fp 0x00007f821ba7d1c0 sp 0x00007f821ba7d158 [Unoptimized] _rootRun@5048458
  pc 0x00007f821a3a0694 fp 0x00007f821ba7d220 sp 0x00007f821ba7d1d0 [Unoptimized] _rootRun@5048458
  pc 0x00007f821a39ffc0 fp 0x00007f821ba7d2b0 sp 0x00007f821ba7d230 [Unoptimized] [email protected]
  pc 0x00007f821a3a6a2b fp 0x00007f821ba7d320 sp 0x00007f821ba7d2c0 [Unoptimized] [email protected]
  pc 0x00007f821a3a6917 fp 0x00007f821ba7d360 sp 0x00007f821ba7d330 [Unoptimized] [email protected].<anonymous closure>
  pc 0x00007f82606e4cd7 fp 0x00007f821ba7d3a8 sp 0x00007f821ba7d370 [Unoptimized] _microtaskLoop@5048458
  pc 0x00007f82606e4942 fp 0x00007f821ba7d3e8 sp 0x00007f821ba7d3b8 [Unoptimized] _startMicrotaskLoop@5048458
  pc 0x00007f82606e4863 fp 0x00007f821ba7d410 sp 0x00007f821ba7d3f8 [Unoptimized] _startMicrotaskLoop@5048458
  pc 0x00007f82606de5a9 fp 0x00007f821ba7d450 sp 0x00007f821ba7d420 [Unoptimized] _runPendingImmediateCallback@1026248
  pc 0x00007f82606e03c7 fp 0x00007f821ba7d4d0 sp 0x00007f821ba7d460 [Unoptimized] _Timer@1026248._runTimers@1026248
  pc 0x00007f82606de933 fp 0x00007f821ba7d508 sp 0x00007f821ba7d4e0 [Unoptimized] _Timer@1026248._handleMessage@1026248
  pc 0x00007f82606de696 fp 0x00007f821ba7d538 sp 0x00007f821ba7d518 [Unoptimized] _Timer@1026248._handleMessage@1026248
  pc 0x00007f82606a9875 fp 0x00007f821ba7d5a0 sp 0x00007f821ba7d548 [Unoptimized] [email protected]:call
  pc 0x00007f82606a87c0 fp 0x00007f821ba7d5f8 sp 0x00007f821ba7d5b0 [Unoptimized] _RawReceivePort@1026248._handleMessage@1026248
  pc 0x00007f8260f03426 fp 0x00007f821ba7d670 sp 0x00007f821ba7d608 [Stub] InvokeDartCode

Exited (-6).
@dart-github-bot
Copy link
Collaborator

Summary: VS Code debugger causes VM crash when inspecting a local variable's value during debugging. The crash occurs in ClassFinalizer::FinalizeType, related to type parameter handling.

@dart-github-bot dart-github-bot added area-vm Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends. triage-automation See https://github.com/dart-lang/ecosystem/tree/main/pkgs/sdk_triage_bot. type-bug Incorrect behavior (everything from a crash to more subtle misbehavior) labels Dec 3, 2024
@a-siva
Copy link
Contributor

a-siva commented Dec 3, 2024

//cc @derekxu16

@a-siva a-siva added vm-service The VM Service Protocol, both the specification and its implementation triaged Issue has been triaged by sub team P2 A bug or feature request we're likely to work on crash Process exits with SIGSEGV, SIGABRT, etc. An unhandled exception is not a crash. and removed triage-automation See https://github.com/dart-lang/ecosystem/tree/main/pkgs/sdk_triage_bot. labels Dec 3, 2024
@derekxu16 derekxu16 self-assigned this Jan 9, 2025
@derekxu16
Copy link
Member

A smaller repro, that I arrived at by reducing the given repro, is to hover over result in the following code when paused at the debugger statement:

import 'dart:developer' show debugger;

abstract interface class SharedTypeStructure<
  TypeStructure extends SharedTypeStructure<TypeStructure>
> {}

class ExpressionTypeAnalysisResult<
  TypeStructure extends SharedTypeStructure<TypeStructure>
> {
  final TypeStructure type;

  ExpressionTypeAnalysisResult({required this.type});
}

extension type SharedTypeSchemaView<
  TypeStructure extends SharedTypeStructure<TypeStructure>
>(SharedTypeStructure<TypeStructure> _typeStructure)
    implements Object {
  TypeStructure unwrapTypeSchemaView() => _typeStructure as TypeStructure;
}

mixin TypeAnalyzer<TypeStructure extends SharedTypeStructure<TypeStructure>> {
  int get nullShortingDepth;

  ExpressionTypeAnalysisResult<TypeStructure> dispatchExpression(
    SharedTypeSchemaView<TypeStructure> schema,
  );

  void analyzeExpression(
    SharedTypeSchemaView<TypeStructure> schema, {
    bool resolveNullShorting = true,
  }) {
    ExpressionTypeAnalysisResult<TypeStructure> result = dispatchExpression(
      schema,
    );
    debugger();
  }
}

class C extends SharedTypeStructure<C> {}

class ClassWithTypeAnalyzer with TypeAnalyzer<C> {
  int get nullShortingDepth => 0;

  ExpressionTypeAnalysisResult<C> dispatchExpression(Object schema) {
    return ExpressionTypeAnalysisResult<C>(type: C());
  }
}

void main() {
  final classWithTypeAnalyzer = ClassWithTypeAnalyzer();
  classWithTypeAnalyzer.analyzeExpression(SharedTypeSchemaView(C()));
}

I haven't found the root cause of the crash yet, but it's possible to avoid the crash by removing the extension type, i.e. changing the code to:

import 'dart:developer' show debugger;

abstract interface class SharedTypeStructure<
  TypeStructure extends SharedTypeStructure<TypeStructure>
> {}

class ExpressionTypeAnalysisResult<
  TypeStructure extends SharedTypeStructure<TypeStructure>
> {
  final TypeStructure type;

  ExpressionTypeAnalysisResult({required this.type});
}

mixin TypeAnalyzer<TypeStructure extends SharedTypeStructure<TypeStructure>> {
  int get nullShortingDepth;

  ExpressionTypeAnalysisResult<TypeStructure> dispatchExpression(
    SharedTypeStructure<TypeStructure> schema,
  );

  void analyzeExpression(
    SharedTypeStructure<TypeStructure> schema, {
    bool resolveNullShorting = true,
  }) {
    ExpressionTypeAnalysisResult<TypeStructure> result = dispatchExpression(
      schema,
    );
    debugger();
  }
}

class C extends SharedTypeStructure<C> {}

class ClassWithTypeAnalyzer with TypeAnalyzer<C> {
  int get nullShortingDepth => 0;

  ExpressionTypeAnalysisResult<C> dispatchExpression(Object schema) {
    return ExpressionTypeAnalysisResult<C>(type: C());
  }
}

void main() {
  final classWithTypeAnalyzer = ClassWithTypeAnalyzer();
  classWithTypeAnalyzer.analyzeExpression(C());
}

So, I should be able to figure out the root cause by looking into what the VM is doing differently when the extension type is present versus when it isn't.

@derekxu16
Copy link
Member

derekxu16 commented Jan 21, 2025

I’ve now created two repros that are even smaller.

Example 1 includes an extension type and crashes:

import 'dart:developer' show debugger;

abstract interface class SharedTypeStructure {}

extension type SharedTypeSchemaView<TypeStructure extends SharedTypeStructure>(
  TypeStructure _typeStructure
)
    implements Object {}

class C extends SharedTypeStructure {}

class ClassWithTypeAnalyzer<TypeStructure extends SharedTypeStructure> {
  SharedTypeSchemaView<TypeStructure> dispatchExpression(
    SharedTypeSchemaView<TypeStructure> schema,
  ) {
    return schema;
  }

  void analyzeExpression(SharedTypeSchemaView<TypeStructure> schema) {
    debugger(); // Evaluate 'dispatchExpression(schema)';
  }
}

void main() {
  final classWithTypeAnalyzer = ClassWithTypeAnalyzer<C>();
  classWithTypeAnalyzer.analyzeExpression(SharedTypeSchemaView(C()));
}

Example 2 does not include an extension type and does not crash:

import 'dart:developer' show debugger;

abstract interface class SharedTypeStructure {}

class C extends SharedTypeStructure {}

class ClassWithTypeAnalyzer<TypeStructure> {
  int dispatchExpression(TypeStructure schema) {
    return 123;
  }

  void analyzeExpression(TypeStructure schema) {
    debugger(); // Evaluate 'dispatchExpression(schema as TypeStructure)';
  }
}

void main() {
  final classWithTypeAnalyzer = ClassWithTypeAnalyzer<C>();
  classWithTypeAnalyzer.analyzeExpression(C());
}

The crash in example 1 happens when the VM tries to finalize the signature of the expression evaluation function. The ClassWithTypeAnalyzer::TypeStructure type parameter is part of that signature, so the VM eventually reaches this line:

const intptr_t offset = parameterized_class.NumTypeArguments() -

The problem is that the parameterized_class.NumTypeArguments() call unexpectedly accesses uninitialized memory.

@johnniwinther or @jensjoha, is it possible that references to the ClassWithTypeAnalyzer::TypeStructure type parameter are not being encoded properly in the expression evaluation function kernel in the first example?

Here is the human-readable dump of the expression evaluation function kernel from example 1:

library from "evaluate:source" as sou {

  class #DebugClass<TypeStructure extends tes::SharedTypeStructure> extends core::Object {
    method /* from org-dartlang-debug:synthetic_debug_expression */ :Eval(tes::SharedTypeSchemaView<sou::#DebugClass::TypeStructure> /* erasure=sou::#DebugClass::TypeStructure */ schema) → dynamic
      return this.{tes::ClassWithTypeAnalyzer::dispatchExpression}(schema){(tes::SharedTypeSchemaView<sou::#DebugClass::TypeStructure> /* erasure=sou::#DebugClass::TypeStructure */) → tes::SharedTypeSchemaView<sou::#DebugClass::TypeStructure> /* erasure=sou::#DebugClass::TypeStructure */};
  }
}

Here is the human-readable dump of the expression evaluation function kernel from example 2:

library from "evaluate:source" as sou {

  class #DebugClass<TypeStructure extends core::Object? = dynamic> extends core::Object {
    method /* from org-dartlang-debug:synthetic_debug_expression */ :Eval(tes::C schema) → dynamic
      return this.{tes::ClassWithTypeAnalyzer::dispatchExpression}(schema as sou::#DebugClass::TypeStructure%){(sou::#DebugClass::TypeStructure%) → core::int};
  }
}

@jensjoha
Copy link
Contributor

I might have changed the examples a little bit, but nevertheless.
I'll also note that it crashes even if just trying to compile the expression 1.
Additionally I have in the below put in the erasure type to make it easier to read.

What the normal compile creates for a similar thing:

  method foo(self::ClassWithTypeAnalyzer::TypeStructure schema) → dynamic
    return 1;

What the expression compiler creates:

method :Eval(#lib1::ClassWithTypeAnalyzer::TypeStructure schema) → dynamic
  return 1;

I'd say that looks fair.

Then the whole thing is wrapped in a component though:

library from "evaluate:source" as sou {
  class #DebugClass<TypeStructure extends #lib1::SharedTypeStructure> {
    method :Eval(sou::#DebugClass::TypeStructure schema) → dynamic
      return 1;
  }
}

Notice how we now reference the type parameter on the #DebugClass.

Let's compare that to a version without an extension type.

From the normal compiler:

  method foo(covariant-by-class self::SharedTypeSchemaView<self::ClassWithTypeAnalyzer::TypeStructure> schema) → dynamic
    return 1;

What the expression compiler creates:

method :Eval(#lib1::SharedTypeSchemaView<#lib1::C> schema) → dynamic
  return 1;

And wrapped in a component.

library from "evaluate:source" as sou {
  class #DebugClass<TypeStructure extends #lib1::SharedTypeStructure> {
    method :Eval(#lib1::SharedTypeSchemaView<#lib1::C> schema) → dynamic
      return 1;
  }
}

Notice how we don't reference any type parameter at all (this is probably because we use the runtime type --- which we don't on extension types because they don't 'exist' at runtime --- but still).


In the VM source I found this:

Type& TranslationHelper::GetDeclarationType(const Class& klass) {
  ASSERT(!klass.IsNull());
  // Forward expression evaluation class to a real class when
  // creating types.
  if (GetExpressionEvaluationClass().ptr() == klass.ptr()) {
    ASSERT(GetExpressionEvaluationRealClass().ptr() != klass.ptr());
    return GetDeclarationType(GetExpressionEvaluationRealClass());
  }
  [...]

So - at least in some places in the VM - when we see, say, class #DebugClass we would substitute, in this instance, ClassWithTypeAnalyzer.

From other debug-printing I noticed this:

Finalizing type '(ClassWithTypeAnalyzer<X0>, X0) => dynamic'
 => IsFunctionType
  ==> Finalizing type 'Type: dynamic' is already finalized.
  ==> Finalizing type 'Type: ClassWithTypeAnalyzer<X0>' is already finalized.
Finalizing type 'TypeParameter: X0'
 => IsTypeParameter
 => IsClassTypeParameter
WARNING: parameterized_class is null

===== CRASH =====
[...]

Notice how it seemingly knows X0, but also doesn't know X0?

And from debug-printing the "normal load":

Finalizing type 'Type: ClassWithTypeAnalyzer<X0>'
  ==> Finalizing type 'TypeParameter: X0' is already finalized.

Lots of other prints etc I got to this: https://dart-review.googlesource.com/c/sdk/+/405381

It at least fixes this reproduction.
It also, I think, sort of makes sense: It shouldn't try to reference the type parameter on the debug class that we're otherwise throwing away --- it should pretend like it's in the real class.
If there's something smarter to do (e.g. set the active class differently up front or something) I don't know. Maybe a VM engineer could figure that out?

@derekxu16
Copy link
Member

Thanks, @jensjoha!

If there's something smarter to do (e.g. set the active class differently up front or something) I don't know. Maybe a VM engineer could figure that out?

I think setting active_class_ to be a class other than the expression evalution class when the expression evaluation class is in fact the one being loaded would introduce more complexity. Your change looks good to me. Can you take a look as well, @alexmarkov?

@alexmarkov
Copy link
Contributor

Maybe we should eagerly set active_class_ toH.GetExpressionEvaluationRealClass() before reading any procedures in case of expression evaluation. That would guarantee that we're not using #DebugClass elsewhere.

However, substituting #DebugClass with real class is inherently fragile as it requires #DebugClass to be fully compatible with real class. Besides having the same type parameters, we might also need to copy supertypes of the real class, so #DebugClass would have the same generic base classes as real class to make sure its type arguments vector is compatible. We should definitely add some assertions to check compatibility.

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. crash Process exits with SIGSEGV, SIGABRT, etc. An unhandled exception is not a crash. P2 A bug or feature request we're likely to work on triaged Issue has been triaged by sub team type-bug Incorrect behavior (everything from a crash to more subtle misbehavior) vm-service The VM Service Protocol, both the specification and its implementation
Projects
None yet
Development

No branches or pull requests

6 participants