|  | // Copyright (c) 2020, 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. | 
|  |  | 
|  | // @dart = 2.9 | 
|  |  | 
|  | import "dart:io"; | 
|  |  | 
|  | import "package:expect/expect.dart"; | 
|  |  | 
|  | main(args) async { | 
|  | if (args.contains("--child")) { | 
|  | var leak = []; | 
|  | while (true) { | 
|  | leak = [leak]; | 
|  | } | 
|  | } else { | 
|  | var exec = Platform.resolvedExecutable; | 
|  | var args = <String>[]; | 
|  | args.addAll(Platform.executableArguments); | 
|  | args.add("--old_gen_heap_size=20"); | 
|  | args.add(Platform.script.toFilePath()); | 
|  | args.add("--child"); | 
|  |  | 
|  | // Should report an unhandled out of memory exception without crashing. | 
|  | print("+ $exec " + args.join(" ")); | 
|  | var result = await Process.run(exec, args); | 
|  |  | 
|  | print("exit: ${result.exitCode}"); | 
|  | print("stdout:"); | 
|  | print(result.stdout); | 
|  | print("stderr:"); | 
|  | print(result.stderr); | 
|  |  | 
|  | Expect.equals(255, result.exitCode, "Unhandled exception, not crash"); | 
|  | Expect.isTrue(result.stderr.contains("Out of Memory")); | 
|  | } | 
|  | } |