Commit 4cd4701f69c for nodejs
commit 4cd4701f69c010dad0f4c48bc342a0abf7e92fe5
Author: Filip Skokan <panva.ip@gmail.com>
Date: Thu Sep 24 09:39:04 2026 +0200
test: deflake inspector async hook setup
Async hook activation can be deferred when the inspector command arrives
during a V8 interrupt. Schedule timeout creation with setImmediate so
the event loop finishes enabling the hooks before recording its async
stack.
Signed-off-by: Filip Skokan <panva.ip@gmail.com>
Assisted-by: Codex
PR-URL: https://github.com/nodejs/node/pull/66255
Reviewed-By: Aviv Keller <me@aviv.sh>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
diff --git a/test/parallel/test-inspector-async-hook-setup-at-signal.js b/test/parallel/test-inspector-async-hook-setup-at-signal.js
index 64a3835e415..88d8dfb26a5 100644
--- a/test/parallel/test-inspector-async-hook-setup-at-signal.js
+++ b/test/parallel/test-inspector-async-hook-setup-at-signal.js
@@ -33,7 +33,6 @@ function waitUntilDebugged() {
// This function is called by the inspector client (session)
function setupTimeoutWithBreak() {
- clearInterval(waiting);
process._rawDebug('Debugger ready, setting up timeout with a break');
setTimeout(() => { debugger; }, 50);
}
@@ -46,16 +45,20 @@ async function waitForInitialSetup(session) {
async function setupTimeoutForStackTrace(session) {
console.error('[test]', 'Setting up timeout for async stack trace');
+ // Async hook setup is deferred when requested from a V8 interrupt. Let the
+ // event loop finish that setup before creating the timeout whose stack we test.
await session.send([
{ 'method': 'Runtime.evaluate',
- 'params': { expression: 'setupTimeoutWithBreak()' } },
+ 'params': {
+ expression: 'clearInterval(waiting); setImmediate(setupTimeoutWithBreak)',
+ } },
{ 'method': 'Debugger.resume' },
]);
}
async function checkAsyncStackTrace(session) {
console.error('[test]', 'Verify basic properties of asyncStackTrace');
- const paused = await session.waitForBreakOnLine(23, '[eval]');
+ const paused = await session.waitForBreakOnLine(22, '[eval]');
assert(paused.params.asyncStackTrace,
`${Object.keys(paused.params)} contains "asyncStackTrace" property`);
assert(paused.params.asyncStackTrace.description, 'Timeout');