Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[v8.x] deps: cherry-pick 09b53ee from upstream V8 #21767

Closed
wants to merge 1 commit into from

Conversation

addaleax
Copy link
Member

This fixes a failure in the v8.x test suite in CI in debug mode. The test is marked flaky, but CI still shows up red for some reason – let’s fix that by actually adressing the bug :)


Original commit message:

[api] Make running scripts in AddMessageListener callback work in debug mode

The existance of an `AllowJavascriptExecutionDebugOnly` scope in
`Isolate::ReportPendingMessages()` indicates that the API supports
running arbitrary JS code in a `AddMessageListener` callback.

Currently, this can fail in debug mode: The
`!isolate->external_caught_exception()` condition is checked when
entering API methods inside such a handler. However, if there is
a verbose `TryCatch` active when the exception occurs, this
check fails, and when calling `ToString()` on the exception object
leaves a pending exception itself, the flag is re-set to `true`.

Fix this problem by clearing the flag and the pending exception if
there was one during `ToString()`. This matches the code a few lines
up in `messages.cc`, so the exception state is now consistent
during the callback.

This currently makes a Node.js test fail in debug mode
(`parallel/test-error-reporting`).

Bug: node:7144
Bug: node:17016
Change-Id: I060d00fea3e9a497f4df34c6ff8d6e29ebe96321
Reviewed-on: https://chromium-review.googlesource.com/718096
Commit-Queue: Yang Guo <[email protected]>
Reviewed-by: Yang Guo <[email protected]>
Cr-Commit-Position: refs/heads/master@{#49466}

Refs: v8/v8@09b53ee

Original commit message:

    [api] Make running scripts in AddMessageListener callback work in debug mode

    The existance of an `AllowJavascriptExecutionDebugOnly` scope in
    `Isolate::ReportPendingMessages()` indicates that the API supports
    running arbitrary JS code in a `AddMessageListener` callback.

    Currently, this can fail in debug mode: The
    `!isolate->external_caught_exception()` condition is checked when
    entering API methods inside such a handler. However, if there is
    a verbose `TryCatch` active when the exception occurs, this
    check fails, and when calling `ToString()` on the exception object
    leaves a pending exception itself, the flag is re-set to `true`.

    Fix this problem by clearing the flag and the pending exception if
    there was one during `ToString()`. This matches the code a few lines
    up in `messages.cc`, so the exception state is now consistent
    during the callback.

    This currently makes a Node.js test fail in debug mode
    (`parallel/test-error-reporting`).

    Bug: node:7144
    Bug: node:17016
    Change-Id: I060d00fea3e9a497f4df34c6ff8d6e29ebe96321
    Reviewed-on: https://chromium-review.googlesource.com/718096
    Commit-Queue: Yang Guo <[email protected]>
    Reviewed-by: Yang Guo <[email protected]>
    Cr-Commit-Position: refs/heads/master@{nodejs#49466}

Refs: v8/v8@09b53ee
@nodejs-github-bot nodejs-github-bot added v8 engine Issues and PRs related to the V8 dependency. v8.x labels Jul 11, 2018
Copy link
Contributor

@MylesBorins MylesBorins left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

MylesBorins pushed a commit that referenced this pull request Jul 13, 2018
Original commit message:

    [api] Make running scripts in AddMessageListener callback work in debug mode

    The existance of an `AllowJavascriptExecutionDebugOnly` scope in
    `Isolate::ReportPendingMessages()` indicates that the API supports
    running arbitrary JS code in a `AddMessageListener` callback.

    Currently, this can fail in debug mode: The
    `!isolate->external_caught_exception()` condition is checked when
    entering API methods inside such a handler. However, if there is
    a verbose `TryCatch` active when the exception occurs, this
    check fails, and when calling `ToString()` on the exception object
    leaves a pending exception itself, the flag is re-set to `true`.

    Fix this problem by clearing the flag and the pending exception if
    there was one during `ToString()`. This matches the code a few lines
    up in `messages.cc`, so the exception state is now consistent
    during the callback.

    This currently makes a Node.js test fail in debug mode
    (`parallel/test-error-reporting`).

    Bug: node:7144
    Bug: node:17016
    Change-Id: I060d00fea3e9a497f4df34c6ff8d6e29ebe96321
    Reviewed-on: https://chromium-review.googlesource.com/718096
    Commit-Queue: Yang Guo <[email protected]>
    Reviewed-by: Yang Guo <[email protected]>
    Cr-Commit-Position: refs/heads/master@{#49466}

Refs: v8/v8@09b53ee

PR-URL: #21767
Refs: v8/v8@09b53ee
Reviewed-By: Ruben Bridgewater <[email protected]>
Reviewed-By: Myles Borins <[email protected]>
@MylesBorins
Copy link
Contributor

landed in 873ee2e

rvagg pushed a commit that referenced this pull request Aug 16, 2018
Original commit message:

    [api] Make running scripts in AddMessageListener callback work in debug mode

    The existance of an `AllowJavascriptExecutionDebugOnly` scope in
    `Isolate::ReportPendingMessages()` indicates that the API supports
    running arbitrary JS code in a `AddMessageListener` callback.

    Currently, this can fail in debug mode: The
    `!isolate->external_caught_exception()` condition is checked when
    entering API methods inside such a handler. However, if there is
    a verbose `TryCatch` active when the exception occurs, this
    check fails, and when calling `ToString()` on the exception object
    leaves a pending exception itself, the flag is re-set to `true`.

    Fix this problem by clearing the flag and the pending exception if
    there was one during `ToString()`. This matches the code a few lines
    up in `messages.cc`, so the exception state is now consistent
    during the callback.

    This currently makes a Node.js test fail in debug mode
    (`parallel/test-error-reporting`).

    Bug: node:7144
    Bug: node:17016
    Change-Id: I060d00fea3e9a497f4df34c6ff8d6e29ebe96321
    Reviewed-on: https://chromium-review.googlesource.com/718096
    Commit-Queue: Yang Guo <[email protected]>
    Reviewed-by: Yang Guo <[email protected]>
    Cr-Commit-Position: refs/heads/master@{#49466}

Refs: v8/v8@09b53ee

PR-URL: #21767
Refs: v8/v8@09b53ee
Reviewed-By: Ruben Bridgewater <[email protected]>
Reviewed-By: Myles Borins <[email protected]>
@MylesBorins MylesBorins mentioned this pull request Aug 16, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
v8 engine Issues and PRs related to the V8 dependency.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants