v8/test/mjsunit/regress/regress-crbug-1239907.js
Camillo Bruni d7fb54776c [d8] Fix stack overflow issues with async hooks
This fix consists of 2 parts:
a) Fix async hooks:
 - Allow initialising the promise hook properties
 - Do not call async hooks if we're overflowing the stack

b) Avoid some more recursion when reporting the stack trace

Bug: chromium:1240723
Change-Id: Icedfc8b48655bacc3f79591944e3869b85f1c4de
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3103321
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/main@{#76383}
2021-08-19 10:36:45 +00:00

37 lines
774 B
JavaScript

// Copyright 2021 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --expose-async-hooks --ignore-unhandled-promises --stack-size=100
async_hooks.createHook({ promiseResolve() { throw new Error(); } }).enable()
import("./does_not_exist.js").then();
function target() {
isFinite.__proto__.__proto__ = new Proxy(target, {
get() { return Promise.resolve(); }
})
}
target();
function runNearStackLimit(f) {
function t() {
try {
return t();
} catch (e) {
return f();
}
}
return t();
}
function __f_2() {
return runNearStackLimit(() => {
return new Promise(function () {
});
});
}
__f_2().then();
__f_2().then();