af7e68931f
The V8 inspector is using the DebugPropertyIterator (a debug only interface) while building RemoteObjects. The DebugPropertyIterator uses the `KeyAccumulator::GetKeys` for this, which can potentially throw, but the DebugPropertyIterator ignores exceptions and keeps iterating. If multiple iteration steps throw an exception (e.g. due to a pending stack overflow), we run into a CHECK in Isolate::Throw, as we can't throw exceptions while another exception is still pending. This CL fixes the CHECK crash by properly propagating exceptions after the iterator is created or advanced and returning early in the inspector if an exception happens. Please note that the regression test that showcases this behavior is still disabled, as fixing the crash causes currently an endless loop. While the exception in `ValueMirror::getProperties` is handled by early returing, we still need to forward it as the result of the `Runtime::evaluate` all the way up the stack. R=bmeurer@chromium.org, yangguo@chromium.org Bug: chromium:1080638 Change-Id: I1d55e0d70490a06a6bc1b0a3525236411da7f64b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2639954 Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Commit-Queue: Simon Zünd <szuend@chromium.org> Cr-Commit-Position: refs/heads/master@{#72203} |
||
---|---|---|
.github | ||
build_overrides | ||
custom_deps | ||
docs | ||
gni | ||
include | ||
infra | ||
samples | ||
src | ||
test | ||
testing | ||
third_party | ||
tools | ||
.clang-format | ||
.clang-tidy | ||
.editorconfig | ||
.flake8 | ||
.git-blame-ignore-revs | ||
.gitattributes | ||
.gitignore | ||
.gn | ||
.vpython | ||
.ycm_extra_conf.py | ||
AUTHORS | ||
BUILD.gn | ||
CODE_OF_CONDUCT.md | ||
codereview.settings | ||
COMMON_OWNERS | ||
DEPS | ||
DIR_METADATA | ||
ENG_REVIEW_OWNERS | ||
INFRA_OWNERS | ||
INTL_OWNERS | ||
LICENSE | ||
LICENSE.fdlibm | ||
LICENSE.strongtalk | ||
LICENSE.v8 | ||
MIPS_OWNERS | ||
OWNERS | ||
PPC_OWNERS | ||
PRESUBMIT.py | ||
README.md | ||
S390_OWNERS | ||
WATCHLISTS |
V8 JavaScript Engine
V8 is Google's open source JavaScript engine.
V8 implements ECMAScript as specified in ECMA-262.
V8 is written in C++ and is used in Google Chrome, the open source browser from Google.
V8 can run standalone, or can be embedded into any C++ application.
V8 Project page: https://v8.dev/docs
Getting the Code
Checkout depot tools, and run
fetch v8
This will checkout V8 into the directory v8
and fetch all of its dependencies.
To stay up to date, run
git pull origin
gclient sync
For fetching all branches, add the following into your remote
configuration in .git/config
:
fetch = +refs/branch-heads/*:refs/remotes/branch-heads/*
fetch = +refs/tags/*:refs/tags/*
Contributing
Please follow the instructions mentioned at v8.dev/docs/contribute.