Skip to content

AOT Compiler Crash #52449

Description

@TimWhiting

Dart SDK version: 3.1.0-128.0.dev (dev) (Thu May 18 23:58:52 2023 -0700) on "linux_x64"

dart compile exe example/scheme.dart 
../../runtime/vm/compiler/backend/il.cc: 3812: error: unreachable code
version=3.1.0-128.0.dev (dev) (Thu May 18 23:58:52 2023 -0700) on "linux_x64"
pid=1007377, thread=-1, isolate_group=isolate(0x55eda953e5c0), isolate=(nil)((nil))
os=linux, arch=x64, comp=no, sim=no
isolate_instructions=0, vm_instructions=0
fp=7ffd7a0b7570, sp=7ffd7a0b7438, pc=55eda7b5be2c
  pc 0x000055eda7b5be2c fp 0x00007ffd7a0b7570 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x37de2c
  pc 0x000055eda7a53f14 fp 0x00007ffd7a0b7650 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x275f14
  pc 0x000055eda7c89dae fp 0x00007ffd7a0b7690 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x4abdae
  pc 0x000055eda7d69ca6 fp 0x00007ffd7a0b76c0 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x58bca6
  pc 0x000055eda7d66028 fp 0x00007ffd7a0b7760 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x588028
  pc 0x000055eda7d62fb2 fp 0x00007ffd7a0b7890 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x584fb2
  pc 0x000055eda7d6a360 fp 0x00007ffd7a0b7980 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x58c360
  pc 0x000055eda7c78187 fp 0x00007ffd7a0b7a60 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x49a187
  pc 0x000055eda7c780be fp 0x00007ffd7a0b7a80 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x49a0be
  pc 0x000055eda7c8a8fd fp 0x00007ffd7a0b7ac0 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x4ac8fd
  pc 0x000055eda7c76be0 fp 0x00007ffd7a0b7c30 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x498be0
  pc 0x000055eda7c7698f fp 0x00007ffd7a0b7c60 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x49898f
  pc 0x000055eda7d142d0 fp 0x00007ffd7a0b7c70 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x5362d0
  pc 0x000055eda7d13049 fp 0x00007ffd7a0b7cf0 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x535049
  pc 0x000055eda7c3d79c fp 0x00007ffd7a0b8350 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x45f79c
  pc 0x000055eda7c3dde5 fp 0x00007ffd7a0b8a10 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x45fde5
  pc 0x000055eda7c3a531 fp 0x00007ffd7a0b8ad0 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x45c531
  pc 0x000055eda7c39534 fp 0x00007ffd7a0b8b60 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x45b534
  pc 0x000055eda7c35074 fp 0x00007ffd7a0b8bb0 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x457074
  pc 0x000055eda7c32361 fp 0x00007ffd7a0b92b0 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x454361
  pc 0x000055eda7c30db8 fp 0x00007ffd7a0b9740 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x452db8
  pc 0x000055eda7dabfc1 fp 0x00007ffd7a0b9860 Dart_Precompile+0x231
  pc 0x000055eda7a4df2c fp 0x00007ffd7a0b99f0 /home/tim/fvm/versions/master/bin/cache/dart-sdk/bin/utils/gen_snapshot+0x26ff2c
-- End of DumpStackTrace
=== Crash occurred when compiling package:syntax/src/scheme/scheme_syntax.dart__$Lambda@25431186_get_formals in AOT mode in GenerateCode pass
=== When compiling block B1[function entry]:2 {
      v2 <- Parameter(0) T{_$Lambda}
}
=== When compiling instruction B1[function entry]:2 {
      v2 <- Parameter(0) T{_$Lambda}
}
*** BEGIN CFG
GenerateCode
==== package:syntax/src/scheme/scheme_syntax.dart__$Lambda@25431186_get_formals (ImplicitGetter)
  0: B0[graph]:0 {
}
  2: B1[function entry]:2 {
      v2 <- Parameter(0) T{_$Lambda}
}
  3:     ParallelMove rcx <- S+1
  4:     v3 <- LoadField(v2 . formals {final}) T{_Record}
  6:     v4 <- LoadField(v3 . :record_field) T{List<SExpr>}
  8:     v5 <- LoadField(v3 . :record_field) T{SExpr??}
 10:     v6 <- MakePair(v4, v5) T{*?}
 12:     Return:4(v6 T{_Record})
*** END CFG
Error: AOT compilation failed
Generating AOT snapshot failed!

The repository is here: https://github.com/TimWhiting/syntax, It involves an ImplicitGetter with a record return type.

I tried simplifying the relevant code as follows, but this doesn't trigger the crash.

sealed class Test {
  Test._();
  factory Test.a(Formals formals) = TestA;
}

sealed class ITest {}

sealed class ITest2 extends ITest {
  Formals get params;
}

typedef Formals = (List<String>, String?);

abstract class TestA extends Test implements ITest2 {
  TestA._() : super._();
  @override
  (List<String>, String?) get params;
  factory TestA(final (List<String>, String?) p) = TestImpl;
}

class TestImpl extends TestA {
  @override
  final (List<String>, String?) params;

  TestImpl(this.params) : super._();
}

void main() {
  final test = TestImpl((['a', 'b'], null));
  print(test.params);
}

Metadata

Metadata

Assignees

Labels

area-vmUse area-vm for VM related issues, including code coverage, and the AOT and JIT backends.

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions