Skip to content
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

[vm/ffi] FfiTransform RangeError #45988

Closed
dcharkes opened this issue May 12, 2021 · 0 comments
Closed

[vm/ffi] FfiTransform RangeError #45988

dcharkes opened this issue May 12, 2021 · 0 comments
Assignees
Labels
area-vm Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends.

Comments

@dcharkes
Copy link
Contributor

dcharkes commented May 12, 2021

@dcharkes ,

I'm getting a strange compilation error when using unions on current Flutter master channel, which is:

Flutter is already up to date on channel master
Flutter 2.3.0-2.0.pre.116 • channel master •
Framework • revision b7dd9acbed (54 minutes ago) • 2021-05-11 13:49:02 -0400
Engine • revision 5f9eb39f7d
Tools • Dart 2.14.0 (build 2.14.0-74.0.dev)
Error log
Crash when compiling null,
at character offset null:
RangeError (index): Invalid value: Not in inclusive range 0..2: 3
#0      List.[] (dart:core-patch/array.dart:110:52)
#1      _FfiDefinitionTransformer._replaceFields.<anonymous closure> (package:vm/transformations/ffi_definitions.dart:546:70)
#2      MapMixin.map (dart:collection/maps.dart:170:28)
#3      _FfiDefinitionTransformer._replaceFields (package:vm/transformations/ffi_definitions.dart:546:12)
#4      _FfiDefinitionTransformer.visitClassInTopologicalOrder (package:vm/transformations/ffi_definitions.dart:198:28)
#5      _FfiDefinitionTransformer.manualVisitInTopologicalOrder.<anonymous closure> (package:vm/transformations/ffi_definitions.dart:158:9)
#6      List.forEach (dart:core-patch/growable_array.dart:403:8)
#7      _FfiDefinitionTransformer.manualVisitInTopologicalOrder (package:vm/transformations/ffi_definitions.dart:134:25)
#8      transformLibraries (package:vm/transformations/ffi_definitions.dart:89:15)
#9      VmTarget.performModularTransformationsOnLibraries (package:vm/target/vm.dart:162:34)
#10     KernelTarget.runBuildTransformations (package:front_end/src/fasta/kernel/kernel_target.dart:1236:19)
#11     KernelTarget.buildComponent.<anonymous closure> (package:front_end/src/fasta/kernel/kernel_target.dart:372:7)
<asynchronous suspension>
#12     withCrashReporting (package:front_end/src/fasta/crash.dart:121:12)
<asynchronous suspension>
#13     generateKernelInternal.<anonymous closure> (package:front_end/src/kernel_generator_impl.dart:164:19)
<asynchronous suspension>
#14     withCrashReporting (package:front_end/src/fasta/crash.dart:121:12)
<asynchronous suspension>
#15     generateKernel.<anonymous closure> (package:front_end/src/kernel_generator_impl.dart:53:12)
<asynchronous suspension>
#16     generateKernel (package:front_end/src/kernel_generator_impl.dart:52:10)
<asynchronous suspension>
#17     kernelForModule (package:front_end/src/api_prototype/kernel_generator.dart:99:11)
<asynchronous suspension>
#18     SingleShotCompilerWrapper.compileInternal (file:///b/s/w/ir/cache/builder/src/third_party/dart/pkg/vm/bin/kernel_service.dart:404:11)
<asynchronous suspension>
#19     Compiler.compile.<anonymous closure> (file:///b/s/w/ir/cache/builder/src/third_party/dart/pkg/vm/bin/kernel_service.dart:218:45)
<asynchronous suspension>
#20     _processLoadRequest (file:///b/s/w/ir/cache/builder/src/third_party/dart/pkg/vm/bin/kernel_service.dart:885:37)
<asynchronous suspension>


#0      List.[] (dart:core-patch/array.dart:110:52)
#1      _FfiDefinitionTransformer._replaceFields.<anonymous closure> (package:vm/transformations/ffi_definitions.dart:546:70)
#2      MapMixin.map (dart:collection/maps.dart:170:28)
#3      _FfiDefinitionTransformer._replaceFields (package:vm/transformations/ffi_definitions.dart:546:12)
#4      _FfiDefinitionTransformer.visitClassInTopologicalOrder (package:vm/transformations/ffi_definitions.dart:198:28)
#5      _FfiDefinitionTransformer.manualVisitInTopologicalOrder.<anonymous closure> (package:vm/transformations/ffi_definitions.dart:158:9)
#6      List.forEach (dart:core-patch/growable_array.dart:403:8)
#7      _FfiDefinitionTransformer.manualVisitInTopologicalOrder (package:vm/transformations/ffi_definitions.dart:134:25)
#8      transformLibraries (package:vm/transformations/ffi_definitions.dart:89:15)
#9      VmTarget.performModularTransformationsOnLibraries (package:vm/target/vm.dart:162:34)
#10     KernelTarget.runBuildTransformations (package:front_end/src/fasta/kernel/kernel_target.dart:1236:19)
#11     KernelTarget.buildComponent.<anonymous closure> (package:front_end/src/fasta/kernel/kernel_target.dart:372:7)
<asynchronous suspension>
#12     withCrashReporting (package:front_end/src/fasta/crash.dart:121:12)
<asynchronous suspension>
#13     generateKernelInternal.<anonymous closure> (package:front_end/src/kernel_generator_impl.dart:164:19)
<asynchronous suspension>
#14     withCrashReporting (package:front_end/src/fasta/crash.dart:121:12)
<asynchronous suspension>
#15     generateKernel.<anonymous closure> (package:front_end/src/kernel_generator_impl.dart:53:12)
<asynchronous suspension>
#16     generateKernel (package:front_end/src/kernel_generator_impl.dart:52:10)
<asynchronous suspension>
#17     kernelForModule (package:front_end/src/api_prototype/kernel_generator.dart:99:11)
<asynchronous suspension>
#18     SingleShotCompilerWrapper.compileInternal (file:///b/s/w/ir/cache/builder/src/third_party/dart/pkg/vm/bin/kernel_service.dart:404:11)
<asynchronous suspension>
#19     Compiler.compile.<anonymous closure> (file:///b/s/w/ir/cache/builder/src/third_party/dart/pkg/vm/bin/kernel_service.dart:218:45)
<asynchronous suspension>
#20     _processLoadRequest (file:///b/s/w/ir/cache/builder/src/third_party/dart/pkg/vm/bin/kernel_service.dart:885:37)
<asynchronous suspension>

This error happens whenever my union has more than three fields. E.g. :

class DartValueFields extends Union {
  Pointer p1;
  Pointer p2;
  Pointer p3;
  Pointer p4;
}

Is this a known limitation or should i open an issue in dart-lang/ffi?

Originally posted by @alexlapa in #38491 (comment)

Offending code in 2.14.0-74.0.dev:

final fieldOffsets = compoundLayout
.map((Abi abi, CompoundLayout v) => MapEntry(abi, v.offsets[i]));

@dcharkes dcharkes added the area-vm Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends. label May 12, 2021
@dcharkes dcharkes self-assigned this May 12, 2021
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.
Projects
None yet
Development

No branches or pull requests

1 participant