| // Copyright (c) 2019, 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=--stacktrace_every=1 --deterministic |
| |
| void foo1(par) { |
| try { |
| () { |
| // The parameter `par` has to be captured within a closure, but it doesn't |
| // matter whether or not it's actually used. |
| print(par.runtimeType); |
| }; |
| // We need to throw, otherwise the crash doesn't happen. We don't need to |
| // catch it explicitly, however. |
| throw ''; |
| } finally { |
| // We need to trigger a lot of stack overflow checks. Somewhere around |
| // 20000 seems to work. |
| int x = 0; |
| for (int loc1 = 0; loc1 < 20000; loc1++) { |
| x += loc1; |
| } |
| print(x); |
| } |
| } |
| |
| main() { |
| try { |
| // Parameter isn't important. |
| foo1(null); |
| } catch (e) { |
| print('foo1 threw'); |
| } |
| } |