mirror of
https://github.com/nodejs/node.git
synced 2025-08-15 13:48:44 +02:00
async_hooks: fix resource stack for deep stacks
460c81dc0e
introduced a bug where the execution resource was not
stored properly if we needed to call into C++ to extend the stack size.
Fix that bug by always storing the resource.
Refs: https://github.com/nodejs/node/pull/34319
Fixes: https://github.com/nodejs/node/issues/34556
PR-URL: https://github.com/nodejs/node/pull/34573
Reviewed-By: Andrey Pechkurov <apechkurov@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
Reviewed-By: Gus Caplan <me@gus.host>
This commit is contained in:
parent
a9c5b873ca
commit
2ba93e1db4
2 changed files with 16 additions and 1 deletions
|
@ -499,11 +499,11 @@ function hasAsyncIdStack() {
|
|||
// This is the equivalent of the native push_async_ids() call.
|
||||
function pushAsyncContext(asyncId, triggerAsyncId, resource) {
|
||||
const offset = async_hook_fields[kStackLength];
|
||||
execution_async_resources[offset] = resource;
|
||||
if (offset * 2 >= async_wrap.async_ids_stack.length)
|
||||
return pushAsyncContext_(asyncId, triggerAsyncId);
|
||||
async_wrap.async_ids_stack[offset * 2] = async_id_fields[kExecutionAsyncId];
|
||||
async_wrap.async_ids_stack[offset * 2 + 1] = async_id_fields[kTriggerAsyncId];
|
||||
execution_async_resources[offset] = resource;
|
||||
async_hook_fields[kStackLength]++;
|
||||
async_id_fields[kExecutionAsyncId] = asyncId;
|
||||
async_id_fields[kTriggerAsyncId] = triggerAsyncId;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue