Minimal reproducible example:
import 'dart:ffi' as ffi;
import 'dart:typed_data';
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Void>)>(isLeaf: true, symbol: 'free')
external void _native(ffi.Pointer<ffi.Void> data);
void probe(Uint8List bytes) {
_native(bytes.address.cast<ffi.Void>());
}
void main() {}
Crash log
Crash when compiling:
Null check operator used on a null value
#0 new Name.byReference (package:kernel/src/ast/names.dart:40:48)
#1 new Name (package:kernel/src/ast/names.dart:33:11)
#2 _FfiUseSiteTransformer._replaceNativeCall (package:vm/modular/transformations/ffi/use_sites.dart:2013:24)
#3 _FfiUseSiteTransformer._visitStaticInvocation (package:vm/modular/transformations/ffi/use_sites.dart:675:18)
#4 _FfiUseSiteTransformer.visitStaticInvocation (package:vm/modular/transformations/ffi/use_sites.dart:239:32)
#5 StaticInvocation.accept (package:kernel/src/ast/expressions.dart:2602:44)
#6 Transformer.transform (package:kernel/visitor.dart:1771:17)
#7 ExpressionStatement.transformChildren (package:kernel/src/ast/statements.dart:63:20)
#8 Transformer.defaultTreeNode (package:kernel/visitor.dart:1805:10)
#9 TreeVisitorDefault.defaultStatement (package:kernel/visitor.dart:622:41)
#10 StatementVisitorDefaultMixin.visitExpressionStatement (package:kernel/visitor.dart:343:7)
#11 ExpressionStatement.accept (package:kernel/src/ast/statements.dart:50:43)
#12 Transformer.transform (package:kernel/visitor.dart:1771:17)
#13 Transformer.transformList (package:kernel/visitor.dart:1788:18)
#14 Block.transformChildren (package:kernel/src/ast/statements.dart:115:7)
#15 Transformer.defaultTreeNode (package:kernel/visitor.dart:1805:10)
#16 TreeVisitorDefault.defaultStatement (package:kernel/visitor.dart:622:41)
#17 StatementVisitorDefaultMixin.visitBlock (package:kernel/visitor.dart:345:31)
#18 FinalizableTransformer.visitBlock. (package:vm/modular/transformations/ffi/finalizable.dart:168:19)
#19 FinalizableTransformer.inScope (package:vm/modular/transformations/ffi/finalizable.dart:60:21)
#20 FinalizableTransformer.visitBlock (package:vm/modular/transformations/ffi/finalizable.dart:166:12)
#21 Block.accept (package:kernel/src/ast/statements.dart:103:43)
#22 Transformer.transform (package:kernel/visitor.dart:1771:17)
#23 FunctionNode.transformChildren (package:kernel/src/ast/functions.dart:247:16)
#24 Transformer.defaultTreeNode (package:kernel/visitor.dart:1805:10)
#25 TreeVisitorDefaultMixin.visitFunctionNode (package:kernel/visitor.dart:577:45)
#26 FunctionNode.accept (package:kernel/src/ast/functions.dart:214:38)
#27 Transformer.transform (package:kernel/visitor.dart:1771:17)
#28 Procedure.transformChildren (package:kernel/src/ast/members.dart:1245:18)
#29 Transformer.defaultTreeNode (package:kernel/visitor.dart:1805:10)
#30 TreeVisitorDefault.defaultMember (package:kernel/visitor.dart:626:35)
#31 MemberVisitorDefaultMixin.visitProcedure (package:kernel/visitor.dart:411:39)
#32 _FfiUseSiteTransformer.visitProcedure (package:vm/modular/transformations/ffi/use_sites.dart:232:26)
#33 FinalizableTransformer.visitProcedure. (package:vm/modular/transformations/ffi/finalizable.dart:155:19)
#34 FinalizableTransformer.inScope (package:vm/modular/transformations/ffi/finalizable.dart:60:21)
#35 FinalizableTransformer.visitProcedure (package:vm/modular/transformations/ffi/finalizable.dart:153:20)
#36 Procedure.accept (package:kernel/src/ast/members.dart:1226:40)
#37 Transformer.transform (package:kernel/visitor.dart:1771:17)
#38 Transformer.transformList (package:kernel/visitor.dart:1788:18)
#39 Library.transformChildren (package:kernel/src/ast/libraries.dart:320:7)
#40 Transformer.defaultTreeNode (package:kernel/visitor.dart:1805:10)
#41 TreeVisitorDefaultMixin.visitLibrary (package:kernel/visitor.dart:565:35)
#42 FfiTransformer.visitLibrary (package:vm/modular/transformations/ffi/common.dart:1073:26)
#43 _FfiUseSiteTransformer.visitLibrary (package:vm/modular/transformations/ffi/use_sites.dart:133:18)
#44 List.forEach (dart:core-patch/growable_array.dart:425:8)
#45 transformLibraries (package:vm/modular/transformations/ffi/use_sites.dart:80:13)
#46 VmTarget.performModularTransformationsOnLibraries (package:vm/modular/target/vm.dart:227:28)
#47 KernelTarget.runBuildTransformations (package:front_end/src/kernel/kernel_target.dart:1611:19)
#48 KernelTarget.buildComponent. (package:front_end/src/kernel/kernel_target.dart:706:7)
#49 withCrashReporting (package:front_end/src/base/crash.dart:139:12)
#50 KernelTarget.buildComponent (package:front_end/src/kernel/kernel_target.dart:647:12)
#51 _buildInternal (package:front_end/src/kernel_generator_impl.dart:209:19)
#52 withCrashReporting (package:front_end/src/base/crash.dart:139:12)
#53 generateKernel. (package:front_end/src/kernel_generator_impl.dart:45:12)
#54 CompilerContext.clear (package:front_end/src/base/compiler_context.dart:77:3)
#55 generateKernel (package:front_end/src/kernel_generator_impl.dart:43:10)
#56 kernelForModule (package:front_end/src/api_prototype/kernel_generator.dart:107:11)
#57 SingleShotCompilerWrapper.compileInternal (file:///Volumes/Work/s/w/ir/x/w/sdk/pkg/vm/bin/kernel_service.dart:464:15)
#58 Compiler.compile. (file:///Volumes/Work/s/w/ir/x/w/sdk/pkg/vm/bin/kernel_service.dart:237:45)
#59 _processLoadRequest (file:///Volumes/Work/s/w/ir/x/w/sdk/pkg/vm/bin/kernel_service.dart:1024:37)
Passed example:
import 'dart:ffi' as ffi;
import 'dart:typed_data';
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Void>)>(isLeaf: true, symbol: 'free')
external void native(ffi.Pointer<ffi.Void> data);
void probe(Uint8List bytes) {
native(bytes.address.cast<ffi.Void>());
}
void main() {}
Minimal reproducible example:
Crash log
Crash when compiling:
Null check operator used on a null value
#0 new Name.byReference (package:kernel/src/ast/names.dart:40:48)
#1 new Name (package:kernel/src/ast/names.dart:33:11)
#2 _FfiUseSiteTransformer._replaceNativeCall (package:vm/modular/transformations/ffi/use_sites.dart:2013:24)
#3 _FfiUseSiteTransformer._visitStaticInvocation (package:vm/modular/transformations/ffi/use_sites.dart:675:18)
#4 _FfiUseSiteTransformer.visitStaticInvocation (package:vm/modular/transformations/ffi/use_sites.dart:239:32)
#5 StaticInvocation.accept (package:kernel/src/ast/expressions.dart:2602:44)
#6 Transformer.transform (package:kernel/visitor.dart:1771:17)
#7 ExpressionStatement.transformChildren (package:kernel/src/ast/statements.dart:63:20)
#8 Transformer.defaultTreeNode (package:kernel/visitor.dart:1805:10)
#9 TreeVisitorDefault.defaultStatement (package:kernel/visitor.dart:622:41)
#10 StatementVisitorDefaultMixin.visitExpressionStatement (package:kernel/visitor.dart:343:7)
#11 ExpressionStatement.accept (package:kernel/src/ast/statements.dart:50:43)
#12 Transformer.transform (package:kernel/visitor.dart:1771:17)
#13 Transformer.transformList (package:kernel/visitor.dart:1788:18)
#14 Block.transformChildren (package:kernel/src/ast/statements.dart:115:7)
#15 Transformer.defaultTreeNode (package:kernel/visitor.dart:1805:10)
#16 TreeVisitorDefault.defaultStatement (package:kernel/visitor.dart:622:41)
#17 StatementVisitorDefaultMixin.visitBlock (package:kernel/visitor.dart:345:31)
#18 FinalizableTransformer.visitBlock. (package:vm/modular/transformations/ffi/finalizable.dart:168:19)
#19 FinalizableTransformer.inScope (package:vm/modular/transformations/ffi/finalizable.dart:60:21)
#20 FinalizableTransformer.visitBlock (package:vm/modular/transformations/ffi/finalizable.dart:166:12)
#21 Block.accept (package:kernel/src/ast/statements.dart:103:43)
#22 Transformer.transform (package:kernel/visitor.dart:1771:17)
#23 FunctionNode.transformChildren (package:kernel/src/ast/functions.dart:247:16)
#24 Transformer.defaultTreeNode (package:kernel/visitor.dart:1805:10)
#25 TreeVisitorDefaultMixin.visitFunctionNode (package:kernel/visitor.dart:577:45)
#26 FunctionNode.accept (package:kernel/src/ast/functions.dart:214:38)
#27 Transformer.transform (package:kernel/visitor.dart:1771:17)
#28 Procedure.transformChildren (package:kernel/src/ast/members.dart:1245:18)
#29 Transformer.defaultTreeNode (package:kernel/visitor.dart:1805:10)
#30 TreeVisitorDefault.defaultMember (package:kernel/visitor.dart:626:35)
#31 MemberVisitorDefaultMixin.visitProcedure (package:kernel/visitor.dart:411:39)
#32 _FfiUseSiteTransformer.visitProcedure (package:vm/modular/transformations/ffi/use_sites.dart:232:26)
#33 FinalizableTransformer.visitProcedure. (package:vm/modular/transformations/ffi/finalizable.dart:155:19)
#34 FinalizableTransformer.inScope (package:vm/modular/transformations/ffi/finalizable.dart:60:21)
#35 FinalizableTransformer.visitProcedure (package:vm/modular/transformations/ffi/finalizable.dart:153:20)
#36 Procedure.accept (package:kernel/src/ast/members.dart:1226:40)
#37 Transformer.transform (package:kernel/visitor.dart:1771:17)
#38 Transformer.transformList (package:kernel/visitor.dart:1788:18)
#39 Library.transformChildren (package:kernel/src/ast/libraries.dart:320:7)
#40 Transformer.defaultTreeNode (package:kernel/visitor.dart:1805:10)
#41 TreeVisitorDefaultMixin.visitLibrary (package:kernel/visitor.dart:565:35)
#42 FfiTransformer.visitLibrary (package:vm/modular/transformations/ffi/common.dart:1073:26)
#43 _FfiUseSiteTransformer.visitLibrary (package:vm/modular/transformations/ffi/use_sites.dart:133:18)
#44 List.forEach (dart:core-patch/growable_array.dart:425:8)
#45 transformLibraries (package:vm/modular/transformations/ffi/use_sites.dart:80:13)
#46 VmTarget.performModularTransformationsOnLibraries (package:vm/modular/target/vm.dart:227:28)
#47 KernelTarget.runBuildTransformations (package:front_end/src/kernel/kernel_target.dart:1611:19)
#48 KernelTarget.buildComponent. (package:front_end/src/kernel/kernel_target.dart:706:7)
#49 withCrashReporting (package:front_end/src/base/crash.dart:139:12)
#50 KernelTarget.buildComponent (package:front_end/src/kernel/kernel_target.dart:647:12)
#51 _buildInternal (package:front_end/src/kernel_generator_impl.dart:209:19)
#52 withCrashReporting (package:front_end/src/base/crash.dart:139:12)
#53 generateKernel. (package:front_end/src/kernel_generator_impl.dart:45:12)
#54 CompilerContext.clear (package:front_end/src/base/compiler_context.dart:77:3)
#55 generateKernel (package:front_end/src/kernel_generator_impl.dart:43:10)
#56 kernelForModule (package:front_end/src/api_prototype/kernel_generator.dart:107:11)
#57 SingleShotCompilerWrapper.compileInternal (file:///Volumes/Work/s/w/ir/x/w/sdk/pkg/vm/bin/kernel_service.dart:464:15)
#58 Compiler.compile. (file:///Volumes/Work/s/w/ir/x/w/sdk/pkg/vm/bin/kernel_service.dart:237:45)
#59 _processLoadRequest (file:///Volumes/Work/s/w/ir/x/w/sdk/pkg/vm/bin/kernel_service.dart:1024:37)
Passed example: