Skip to content

Illegal argument in isolate message : (function types are not supported yet) #44624

Closed
@wustrong

Description

@wustrong

This tracker is for issues related to:

  • Dart VM

  • Dart SDK Version (dart --version)
    Dart SDK version: 2.10.3 (stable) (Tue Oct 27 14:44:30 2020 +0100) on "linux_x64"

I tried to spawn a new isolate,but failed. I do not know why and how to figure it out . the error response like this:

startup tcp isolates failed, error: Invalid argument(s): Illegal argument in isolate message : (function types are not supported yet), stacktrace: #0 spawnFunction (dart:_internal-patch/internal_patch.dart:184:54)
#1 Isolate.spawn (dart:isolate-patch/isolate_patch.dart:380:7)
#2 IsolateServerTransport._spawn (package:trpc_dart/src/transport/isolate_server_transport.dart:38:35)
#3 IsolateServerTransport._spawnTCP (package:trpc_dart/src/transport/isolate_server_transport.dart:45:12)
#4 IsolateServerTransport.listenAndServeStream (package:trpc_dart/src/transport/isolate_server_transport.dart:60:39)
#5 DefaultServerTransport.listenAndServe (package:trpc_dart/src/transport/server_transport.dart:56:15)
#6 ServiceImpl.serve (package:trpc_dart/src/server/service.dart:138:28)
#7 Server.serve (package:trpc_dart/src/server/server.dart:56:19)
#8 main (file:///home/strongwu/code/trpc/trpc-dart/example/helloworld/bin/server.dart:23:18)
#9 _startIsolate. (dart:isolate-patch/isolate_patch.dart:299:32)
#10 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)

here is my code:

top-level or static method

void workerEntryPoint(IsolateWorker worker) {
  worker.start();
}

spawn

    final worker = IsolateWorker(ctx, lsOpts, id, receivePort.sendPort, networkType);
    final isolate = await Isolate.spawn(workerEntryPoint, worker, paused: true, debugName: id);

entrypoint message

class IsolateWorker {
  SendPort supervisingSendPort;

  ReceivePort supervisingReceivePort;

  // simple class
  Context ctx;

  // simple class
  ListenServeOptions lsOpts;

  String id;

  int networkType;

  Stream<Socket> _listener;

  RawDatagramSocket _udpConn;

  IsolateWorker(this.ctx, this.lsOpts, this.id, this.supervisingSendPort, this.networkType);

  Future start() async {
    supervisingReceivePort = ReceivePort();
    supervisingReceivePort.listen(listener);
    logger.info('IsolateServer($id) listening, sending port');
    supervisingSendPort.send(supervisingReceivePort.sendPort);
   ....
  }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

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

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions