Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
deps: V8: backport 3a75c1f
Original commit message:

    Fixing a possible freeze on abort with 'v8_win64_unwinding_info'

    Win64 unwind data can specify a language-specific handler function which is
    called as part of the search for an exception handler, as described in
    https://docs.microsoft.com/en-us/cpp/build/exception-handling-x64?view=vs-2019.
    This is used for example by Crashpad to register its own exception handler for
    exceptions in V8-generated code.
    There is a problem in the code that may cause a freeze on abort: in file
    \deps\v8\src\unwinding-info-win64.cc in function CRASH_HANDLER_FUNCTION_NAME the
    line:
        return EXCEPTION_CONTINUE_SEARCH;
    should be
        return ExceptionContinueSearch;

    These constants are both used in the context of Win32 exception handlers, but
    they have different semantics and unfortunately different values:
    EXCEPTION_CONTINUE_SEARCH (=0) should be returned by an exception filter
    while a language-specific handler should return an EXCEPTION_DISPOSITION value,
    and more precisely ExceptionContinueSearch (=1) in this case.

    Bug: v8:9295
    Change-Id: I1a3aaabf357e52a909611814f1ea013cf652ae06
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1629795
    Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
    Commit-Queue: Paolo Severini <paolosev@microsoft.com>
    Cr-Commit-Position: refs/heads/master@{#61867}

Refs: v8/v8@3a75c1f

Backport-PR-URL: #28005
PR-URL: #27375
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
  • Loading branch information
refack authored and targos committed Jun 4, 2019
commit e4aa8697266dc763b3a71f88440f6399c3960973
4 changes: 2 additions & 2 deletions common.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@

# Reset this number to 0 on major V8 upgrades.
# Increment by one for each non-official patch applied to deps/v8.
'v8_embedder_string': '-node.12',
'v8_embedder_string': '-node.13',

##### V8 defaults for Node.js #####

Expand Down Expand Up @@ -70,7 +70,7 @@
# https://github.com/nodejs/node/pull/22920/files#r222779926
'v8_enable_fast_mksnapshot': 0,

'v8_win64_unwinding_info': 0,
'v8_win64_unwinding_info': 1,

# TODO(refack): make v8-perfetto happen
'v8_use_perfetto': 0,
Expand Down
2 changes: 1 addition & 1 deletion deps/v8/src/unwinding-info-win64.cc
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ extern "C" int CRASH_HANDLER_FUNCTION_NAME(
EXCEPTION_POINTERS info = {ExceptionRecord, ContextRecord};
return unhandled_exception_callback_g(&info);
}
return EXCEPTION_CONTINUE_SEARCH;
return ExceptionContinueSearch;
}

static constexpr int kMaxExceptionThunkSize = 12;
Expand Down