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

src: store pointer to Environment on DestroyParam #21099

Closed
wants to merge 2 commits into from

Conversation

apapirovski
Copy link
Member

@apapirovski apapirovski commented Jun 2, 2018

To avoid a potential segfault when inside WeakCallback, store a reference to Environment inside DestroyParam. (Talk to @hashseed for more info.)

Without this patch, node will fail on one of our tests when run as node --stress-compaction test/parallel/test-async-hooks-recursive-stack.js.

Co-authored-by: Yang Guo yangguo@chromium.org
Co-authored-by: Michaël Zasso targos@protonmail.com

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • commit message follows commit guidelines

To avoid a potential segfault when inside WeakCallback, store a reference
to Environment inside DestroyParam.

Co-authored-by: Yang Guo <yangguo@chromium.org>
Co-authored-by: Michaël Zasso <targos@protonmail.com>
@nodejs-github-bot nodejs-github-bot added the c++ Issues and PRs that require attention from people who are familiar with C++. label Jun 2, 2018
@apapirovski
Copy link
Member Author

@@ -426,6 +426,7 @@ static void RegisterDestroyHook(const FunctionCallbackInfo<Value>& args) {
Isolate* isolate = args.GetIsolate();
DestroyParam* p = new DestroyParam();
p->asyncId = args[1].As<Number>()->Value();
p->env = Environment::GetCurrent(isolate);
Copy link
Member

Choose a reason for hiding this comment

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

nit: isolateargs

Copy link
Member Author

Choose a reason for hiding this comment

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

Done. Thanks!

@apapirovski
Copy link
Member Author

Landed in 0300f7c

@apapirovski apapirovski closed this Jun 5, 2018
@apapirovski apapirovski deleted the fix-weak-callback branch June 5, 2018 09:15
apapirovski added a commit that referenced this pull request Jun 5, 2018
To avoid a potential segfault when inside WeakCallback, store a
reference to Environment inside DestroyParam.

PR-URL: #21099
Reviewed-By: Yang Guo <yangguo@chromium.org>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com>

Co-authored-by: Yang Guo <yangguo@chromium.org>
Co-authored-by: Michaël Zasso <targos@protonmail.com>
MylesBorins pushed a commit that referenced this pull request Jun 6, 2018
To avoid a potential segfault when inside WeakCallback, store a
reference to Environment inside DestroyParam.

PR-URL: #21099
Reviewed-By: Yang Guo <yangguo@chromium.org>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com>

Co-authored-by: Yang Guo <yangguo@chromium.org>
Co-authored-by: Michaël Zasso <targos@protonmail.com>
@MylesBorins MylesBorins mentioned this pull request Jun 6, 2018
@addaleax
Copy link
Member

addaleax commented Jul 2, 2018

@apapirovski Could you backport this to v8.x?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c++ Issues and PRs that require attention from people who are familiar with C++.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants