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

Dart2js crash on sound Function types in external setters #33898

Open
lexaknyazev opened this issue Jul 18, 2018 · 0 comments
Open

Dart2js crash on sound Function types in external setters #33898

lexaknyazev opened this issue Jul 18, 2018 · 0 comments
Labels
area-web Use area-web for Dart web related issues, including the DDC and dart2js compilers and JS interop. crash Process exits with SIGSEGV, SIGABRT, etc. An unhandled exception is not a crash. dart2js-crash web-dart2js

Comments

@lexaknyazev
Copy link
Contributor

Dart SDK 2.0.0-dev.69.0 (also present in 2.0.0-dev.68.0)

@JS()
library js_interop;

import 'dart:async';
import 'package:js/js.dart';

typedef MyFunc = void Function(Object o);

@JS()
@anonymous
abstract class Exports {
  external set foo(Function value);
  external set bar(MyFunc value);
  external set baz(void value(Object o));
  external set qux(Future<void> value (Object o));
}

@JS()
external Exports get exports;

void main() {
  // this compiles fine
  exports.foo = allowInterop(print);

  // crash
  exports.bar = allowInterop(print);

  // crash
  exports.baz = allowInterop(print);

  // something really interesting here:
  // uncommenting this line prevents compiler crash on two previous lines
  // exports.qux = allowInterop((Object o) async => await print(o));
}

Crash looks like this:

org-dartlang-sdk:///sdk/lib/_internal/js_runtime/lib/js_helper.dart@89651+1:
Internal Error: The compiler crashed when compiling this element.
The compiler is broken.

When compiling the above element, the compiler crashed. It is not
possible to tell if this is caused by a problem in your program or
not. Regardless, the compiler should not crash.

The Dart team would greatly appreciate if you would take a moment to
report this problem at http://dartbug.com/new.

Please include the following information:

* the name and version of your operating system,

* the Dart SDK build number (2.0.0-dev.69.0), and

* the entire message you see here (including the full stack trace
  below as well as the source location above).

The compiler crashed: NoSuchMethodError: The method 'localIsUsedInTryOrSync' was called on null.
Receiver: null
Tried calling: localIsUsedInTryOrSync(Instance of 'JLocal')
#0      Object.noSuchMethod (dart:core/runtime/libobject_patch.dart:46:5)
#1      LocalsHandler.isAccessedDirectly (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/ssa/locals_handler.dart:293:20)
#2      LocalsHandler.readLocal (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/ssa/locals_handler.dart:319:9)
#3      KernelSsaGraphBuilder.visitVariableGet (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/ssa/builder_kernel.dart:2954:29)
#4      VariableGet.accept (package:kernel/ast.dart:2154:36)
#5      KernelSsaGraphBuilder.visitMethodInvocation (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/ssa/builder_kernel.dart:4396:19)
#6      MethodInvocation.accept (package:kernel/ast.dart:2759:36)
#7      KernelSsaGraphBuilder.visitIfStatement.<anonymous closure> (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/ssa/builder_kernel.dart:2030:46)
#8      SsaBranchBuilder.buildCondition (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/ssa/ssa_branch_builder.dart:41:19)
#9      SsaBranchBuilder._handleDiamondBranch (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/ssa/ssa_branch_builder.dart:199:5)
#10     SsaBranchBuilder.handleIf (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/ssa/ssa_branch_builder.dart:116:5)
#11     KernelSsaGraphBuilder.handleIf (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/ssa/builder_kernel.dart:2044:19)
#12     KernelSsaGraphBuilder.visitIfStatement (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/ssa/builder_kernel.dart:2029:5)
#13     IfStatement.accept (package:kernel/ast.dart:4179:35)
#14     KernelSsaGraphBuilder.visitBlock (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/ssa/builder_kernel.dart:1404:17)
#15     Block.accept (package:kernel/ast.dart:3791:35)
#16     KernelSsaGraphBuilder.buildFunctionNode (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/ssa/builder_kernel.dart:1024:23)
#17     KernelSsaGraphBuilder.build.<anonymous closure> (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/ssa/builder_kernel.dart:203:15)
#18     CompilerDiagnosticReporter.withCurrentElement (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/compiler.dart:750:15)
#19     KernelSsaGraphBuilder.build (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/ssa/builder_kernel.dart:188:21)
#20     KernelSsaBuilder.build.<anonymous closure> (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart:116:22)
#21     CompilerTask.measure (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/common/tasks.dart:63:51)
#22     KernelSsaBuilder.build (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart:102:17)
#23     SsaBuilderTask.build (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/ssa/ssa.dart:96:21)
#24     SsaFunctionCompiler.compile (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/ssa/ssa.dart:44:29)
#25     JavaScriptBackend.codegen (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/js_backend/backend.dart:700:26)
#26     KernelCodegenWorkItem.run (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart:85:21)
#27     Compiler.emptyQueue.<anonymous closure>.<anonymous closure>.<anonymous closure>.<anonymous closure>.<anonymous closure> (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/compiler.dart:428:70)
#28     CompilerTask.measureSubtask (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/common/tasks.dart:178:35)
#29     Compiler.emptyQueue.<anonymous closure>.<anonymous closure>.<anonymous closure>.<anonymous closure> (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/compiler.dart:428:32)
#30     CompilerTask.measureSubtask (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/common/tasks.dart:178:35)
#31     Compiler.emptyQueue.<anonymous closure>.<anonymous closure>.<anonymous closure> (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/compiler.dart:426:28)
#32     CompilerDiagnosticReporter.withCurrentElement (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/compiler.dart:750:15)
#33     Compiler.emptyQueue.<anonymous closure>.<anonymous closure> (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/compiler.dart:424:18)
#34     EnqueuerStrategy.processWorkItem (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/enqueue.dart:501:6)
#35     CodegenEnqueuer._forEach (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/js_backend/enqueuer.dart:247:20)
#36     CodegenEnqueuer.forEach (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/js_backend/enqueuer.dart:262:5)
#37     Compiler.emptyQueue.<anonymous closure> (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/compiler.dart:420:16)
#38     CompilerTask.measureSubtask (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/common/tasks.dart:178:35)
#39     Compiler.emptyQueue (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/compiler.dart:419:14)
#40     Compiler.processQueue.<anonymous closure> (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/compiler.dart:441:7)
#41     CompilerTask.measureSubtask (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/common/tasks.dart:178:35)
#42     Compiler.processQueue (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/compiler.dart:438:14)
#43     Compiler.generateJavaScriptCode (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/compiler.dart:359:5)
#44     Compiler.compileLoadedLibraries.<anonymous closure> (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/compiler.dart:385:38)
#45     CompilerTask.measureSubtask (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/common/tasks.dart:178:35)
#46     Compiler.compileLoadedLibraries (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/compiler.dart:379:16)
#47     Compiler.runInternal (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/compiler.dart:277:5)
<asynchronous suspension>
#48     Compiler.run.<anonymous closure>.<anonymous closure> (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/compiler.dart:216:38)
#49     new Future.sync (dart:async/future.dart:224:31)
#50     Compiler.run.<anonymous closure> (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/compiler.dart:216:20)
#51     CompilerTask.measureSubtask (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/common/tasks.dart:178:35)
#52     Compiler.run (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/compiler.dart:213:41)
#53     CompilerImpl.run.<anonymous closure>.<anonymous closure> (file:///E:/b/build/slave/dart-sdk-windows-dev/build/sdk/pkg/compiler/lib/src/apiimpl.dart:148:22)
#54     _RootZone.runUnary (dart:async/zone.dart:1381:54)
#55     _FutureListener.handleValue (dart:async/future_impl.dart:129:18)
#56     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:642:45)
#57     Future._propagateToListeners (dart:async/future_impl.dart:671:32)
#58     Future._addListener.<anonymous closure> (dart:async/future_impl.dart:351:9)
#59     _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
#60     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
#61     _runPendingImmediateCallback (dart:isolate/runtime/libisolate_patch.dart:113:13)
#62     _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:166:5)
@matanlurey matanlurey added web-dart2js dart2js-crash crash Process exits with SIGSEGV, SIGABRT, etc. An unhandled exception is not a crash. labels Jul 18, 2018
@vsmenon vsmenon added the area-web Use area-web for Dart web related issues, including the DDC and dart2js compilers and JS interop. label Jul 20, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-web Use area-web for Dart web related issues, including the DDC and dart2js compilers and JS interop. crash Process exits with SIGSEGV, SIGABRT, etc. An unhandled exception is not a crash. dart2js-crash web-dart2js
Projects
None yet
Development

No branches or pull requests

3 participants