6b3abe0a98
Issue b/177800357. TEST=existing test suite Change-Id: Id6b113932ab7014b8fa6c105845c5c490b60f5e8 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/181320 Commit-Queue: Alexander Aprelev <aam@google.com> Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
37 lines
1.2 KiB
Dart
37 lines
1.2 KiB
Dart
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
|
|
// VMOptions=--no-enable-isolate-groups
|
|
|
|
import "dart:isolate";
|
|
import "dart:io";
|
|
|
|
void main(List<String> args) {
|
|
if (args.contains("--child")) {
|
|
new RawReceivePort(); // Hang if not killed.
|
|
Isolate.current.kill(priority: Isolate.immediate);
|
|
// No intervening call.
|
|
throw "QQQ Should not be reached";
|
|
} else {
|
|
var exec = Platform.resolvedExecutable;
|
|
var args = new List<String>();
|
|
args.addAll(Platform.executableArguments);
|
|
args.add(Platform.script.toFilePath());
|
|
args.add("--child");
|
|
var result = Process.runSync(exec, args);
|
|
if (result.exitCode != 255) {
|
|
throw "Wrong exit code: ${result.exitCode}";
|
|
}
|
|
if (result.stderr.contains("QQQ Should not be reached")) {
|
|
print(result.stderr);
|
|
throw "Not killed synchronously";
|
|
}
|
|
if (!result.stderr.contains("isolate terminated by Isolate.kill")) {
|
|
print(result.stderr);
|
|
throw "Missing killed message";
|
|
}
|
|
}
|
|
}
|