forked from Pissandshittium/pissandshittium
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
V8 x64 backend doesn't emit ABI compliant stack frames
On 64 bit Windows, stack walking does not work across stack frames generated by V8 because the V8 x64 backend doesn't emit unwinding info and because it does not emi ABI compliant stack frames. (bug v8:3598). This should be fixed with this CL: https://chromium-review.googlesource.com/c/v8/v8/+/1469329 The fix consists in having V8 register dynamically PDATA/XDATA for the whole code-range address space of an isolate every time a new isolate is initialized, and unregister them when the Isolate is destroyed. A more detailed description of the V8 fix can be found here: https://docs.google.com/document/d/1-wf50jFlii0c_Pr52lm2ZU-49m220nhYMrHDi3vXnh0/edit This V8 changes are currently experimental, behind the v8_win64_unwinding_info build flag and the '--win64-unwinding-info' command line flag. However Crashpad already registers PDATA/XDATA for the code range of a V8 isolate, in order to be able to handle and report unhandled exceptions that have V8 dynamic code in the call stack. For more details, see: https://chromium.googlesource.com/v8/v8.git/+/9b32bb22c1e516a4931ac647656bdf07bd7332be Since it is not possible to register multiple PDATA entries for the same address range, a new functions has been added to the V8 API: - SetUnhandledExceptionCallback() can be used by an embedder to register its own unhandled exception handler for exceptions that arise in V8-generated code. This CL contains a few small changes to use this updated V8 API: Crashpad calls v8::Isolate::SetUnhandledExceptionCallback() to register its own custom exception handler for V8-code. - When the '--win64-unwinding-info' flag is set, V8 will register the specified exception handler as part of the Win64 unwind info, for jitted code and for embedded builtins code. - When the '--win64-unwinding-info' flag is not set, V8 will still register the specified exception handler (but no precise unwind data) for the code range of jitted code only, as Crashpad currently does. Bug: v8:3598 Change-Id: Iba4a724a04a3bc3420c986d3e3b22f3b4aea279a Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1474703 Reviewed-by: Jochen Eisinger <jochen@chromium.org> Reviewed-by: Jeremy Roman <jbroman@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Paolo Severini <paolosev@microsoft.com> Cr-Commit-Position: refs/heads/master@{#651075}
- Loading branch information
1 parent
77dccc4
commit fb4ab3b
Showing
13 changed files
with
10 additions
and
275 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters