Repository navigation
test: wait on conditions instead of fixed timeouts - #52447
Merged
Merged
Conversation
The "keeps a ChunkedDataPipeReadableStream alive while a read is pending" test failed under Linux ASAN because hard-coded 5s timeout caps expired before the slower instrumented build made progress. Replace the fixed timeouts with condition-based waits: await the real promises for handler setup and the pending read, poll GC via gcUntil() until the stream is actually released, and abort the request before the release check so the live request no longer roots the stream. Test intent and assertions are unchanged. Skip-Lint: test cleanup (cherry picked from commit 9c78554)
|
No Release Notes |
ckerr
added a commit
that referenced
this pull request
Aug 5, 2026
The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run. Ref: #52447 Co-Authored-By: GitHub Copilot <copilot@github.com>
ckerr
added a commit
that referenced
this pull request
Aug 5, 2026
The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run. Ref: #52447 Co-Authored-By: GitHub Copilot <copilot@github.com>
ckerr
added a commit
that referenced
this pull request
Aug 5, 2026
The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run. Ref: #52447 Co-Authored-By: GitHub Copilot <copilot@github.com>
ckerr
added a commit
that referenced
this pull request
Aug 5, 2026
The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run. Ref: #52447 Co-Authored-By: GitHub Copilot <copilot@github.com>
ckerr
added a commit
that referenced
this pull request
Aug 7, 2026
The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run. Ref: #52447 Co-Authored-By: GitHub Copilot <copilot@github.com>
jkleinsc
pushed a commit
that referenced
this pull request
Aug 20, 2026
The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run. Ref: #52447 Co-Authored-By: GitHub Copilot <copilot@github.com>
jkleinsc
pushed a commit
that referenced
this pull request
Aug 24, 2026
The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run. Ref: #52447 Co-Authored-By: GitHub Copilot <copilot@github.com>
jkleinsc
pushed a commit
that referenced
this pull request
Aug 24, 2026
The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run. Ref: #52447 Co-Authored-By: GitHub Copilot <copilot@github.com>
jkleinsc
pushed a commit
that referenced
this pull request
Aug 24, 2026
The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run. Ref: #52447 Co-Authored-By: GitHub Copilot <copilot@github.com>
jkleinsc
pushed a commit
that referenced
this pull request
Aug 25, 2026
The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run. Ref: #52447 Co-Authored-By: GitHub Copilot <copilot@github.com>
jkleinsc
pushed a commit
that referenced
this pull request
Aug 25, 2026
The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run. Ref: #52447 Co-Authored-By: GitHub Copilot <copilot@github.com>
deepak1556
pushed a commit
that referenced
this pull request
Aug 26, 2026
The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run. Ref: #52447 Co-Authored-By: GitHub Copilot <copilot@github.com>
jkleinsc
pushed a commit
that referenced
this pull request
Aug 26, 2026
The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run. Ref: #52447 Co-Authored-By: GitHub Copilot <copilot@github.com>
deepak1556
added a commit
that referenced
this pull request
Aug 27, 2026
* chore: bump node in DEPS to v24.19.0 * chore: remove upstreamed patch Ref: nodejs/node#64053 Co-Authored-By: GitHub Copilot <copilot@github.com> * chore: update patches (trivial only) Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): add perfetto trace agent Backport Node's Perfetto tracing agent now that Chromium V8 no longer exposes the legacy tracing controller APIs. Ref: nodejs/node#64565 Ref: nodejs/node#64721 Co-Authored-By: GitHub Copilot <copilot@github.com> * node#64565: src: rename legacy trace event headers Ref: nodejs/node#64565 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): sample delay per event loop iteration Ref: nodejs/node#62935 Ref: nodejs/node#64480 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): avoid redundant std::get_if<>() call Ref: nodejs/node#64094 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): add perfetto trace agent Ref: nodejs/node#64565 Co-Authored-By: GitHub Copilot <copilot@github.com> * node#64053: src: abstract tracing agent for legacy and perfetto Ref: nodejs/node#64053 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): add perfetto trace agent Ref: nodejs/node#64565 Co-Authored-By: GitHub Copilot <copilot@github.com> * node#64053: src: abstract tracing agent for legacy and perfetto Ref: nodejs/node#64053 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): support native IPC serialization in V8 sandbox Ref: nodejs/node#63933 Co-Authored-By: GitHub Copilot <copilot@github.com> * test: hide output package.json in node spec runner Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package. Ref: nodejs/node#44713 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): account for libc++ rm error on Electron Linux Node's fs.rmSync() delegates recursive deletion to std::filesystem::remove_all(). Electron's Linux build uses libc++, which reports ENOTEMPTY here while Node's libstdc++ build reports EACCES. Ref: nodejs/node#57103 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): mark worker stack-size test flaky Ref: nodejs/node#33085 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): restore user timing trace events Ref: #50591 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): own fallback tracing controller Ref: nodejs/node#64565 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): release cppgc wrapper tracking nodes Ref: nodejs/node#56534 Co-Authored-By: GitHub Copilot <copilot@github.com> * test: extend cpp heap remote app timeout The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run. Ref: #52447 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): remove unused legacy tracing backend Electron builds Node exclusively with Perfetto since #50591. Wire the upstream Perfetto agent directly and drop the legacy header split and dual-backend source lists. Ref: #50591 Ref: nodejs/node#64565 Co-Authored-By: GitHub Copilot <copilot@github.com> * docs: better explanation of test_account_for_libc_rm_error_on_electron_linux.patch * refactor: node tracing agent and track event registration (#52678) * fix: register Node tracing in utility processes The Node upgrade moved tracing setup out of JavascriptEnvironment, but the utility process did not adopt the explicit registration used by other embedded Node hosts. Register its TrackEvent data source with Chromium before creating the isolate. Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> * chore: update patches (trivial only) * chore: update patches * Revert "fix(patch): mark worker stack-size test flaky" This reverts commit f2e5cb5. * fixup! support native IPC serialization in V8 sandbox * chore: address review feedback * fixup! support native IPC serialization in V8 sandbox Allocate ValueSerializer buffers as V8 backing stores and retain the original backing store when adopting the released buffer. This preserves the shared allocator lifetime when serialized buffers are transferred from a worker and outlive its isolate. * fixup! refactor: node tracing agent and track event registration --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Charles Kerr <charles@charleskerr.com> Co-authored-by: GitHub Copilot <copilot@github.com> Co-authored-by: Robo <hop2deep@gmail.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
jkleinsc
pushed a commit
that referenced
this pull request
Aug 27, 2026
The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run. Ref: #52447 Co-Authored-By: GitHub Copilot <copilot@github.com>
MarshallOfSound
pushed a commit
that referenced
this pull request
Aug 28, 2026
* chore: bump node in DEPS to v24.19.0 * chore: remove upstreamed patch Ref: nodejs/node#64053 Co-Authored-By: GitHub Copilot <copilot@github.com> * chore: update patches (trivial only) * fix(patch): add perfetto trace agent Backport Node's Perfetto tracing agent now that Chromium V8 no longer exposes the legacy tracing controller APIs. Ref: nodejs/node#64565 Ref: nodejs/node#64721 Co-Authored-By: GitHub Copilot <copilot@github.com> * node#64565: src: rename legacy trace event headers Ref: nodejs/node#64565 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): sample delay per event loop iteration Ref: nodejs/node#62935 Ref: nodejs/node#64480 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): avoid redundant std::get_if<>() call Ref: nodejs/node#64094 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): add perfetto trace agent Ref: nodejs/node#64565 Co-Authored-By: GitHub Copilot <copilot@github.com> * node#64053: src: abstract tracing agent for legacy and perfetto Ref: nodejs/node#64053 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): add perfetto trace agent Ref: nodejs/node#64565 Co-Authored-By: GitHub Copilot <copilot@github.com> * node#64053: src: abstract tracing agent for legacy and perfetto Ref: nodejs/node#64053 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): support native IPC serialization in V8 sandbox Ref: nodejs/node#63933 Co-Authored-By: GitHub Copilot <copilot@github.com> * test: hide output package.json in node spec runner Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package. Ref: nodejs/node#44713 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): account for libc++ rm error on Electron Linux Node's fs.rmSync() delegates recursive deletion to std::filesystem::remove_all(). Electron's Linux build uses libc++, which reports ENOTEMPTY here while Node's libstdc++ build reports EACCES. Ref: nodejs/node#57103 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): mark worker stack-size test flaky Ref: nodejs/node#33085 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): restore user timing trace events Ref: #50591 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): own fallback tracing controller Ref: nodejs/node#64565 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): release cppgc wrapper tracking nodes Ref: nodejs/node#56534 Co-Authored-By: GitHub Copilot <copilot@github.com> * test: extend cpp heap remote app timeout The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run. Ref: #52447 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): remove unused legacy tracing backend Electron builds Node exclusively with Perfetto since #50591. Wire the upstream Perfetto agent directly and drop the legacy header split and dual-backend source lists. Ref: #50591 Ref: nodejs/node#64565 Co-Authored-By: GitHub Copilot <copilot@github.com> * docs: better explanation of test_account_for_libc_rm_error_on_electron_linux.patch * refactor: node tracing agent and track event registration (#52678) * fix: register Node tracing in utility processes The Node upgrade moved tracing setup out of JavascriptEnvironment, but the utility process did not adopt the explicit registration used by other embedded Node hosts. Register its TrackEvent data source with Chromium before creating the isolate. Co-Authored-By: John Kleinschmidt <jkleinsc@electronjs.org> * chore: update patches (trivial only) * chore: update patches (trivial only) Co-Authored-By: GitHub Copilot <copilot@github.com> * Revert "fix(patch): mark worker stack-size test flaky" This reverts commit f2e5cb5. * fixup! support native IPC serialization in V8 sandbox * chore: address review feedback (cherry picked from commit b8f475c) * fixup! support native IPC serialization in V8 sandbox Allocate ValueSerializer buffers as V8 backing stores and retain the original backing store when adopting the released buffer. This preserves the shared allocator lifetime when serialized buffers are transferred from a worker and outlive its isolate. (cherry picked from commit f35b26d) * fixup! refactor: node tracing agent and track event registration (cherry picked from commit d898f33) --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Charles Kerr <charles@charleskerr.com> Co-authored-by: GitHub Copilot <copilot@github.com> Co-authored-by: Robo <hop2deep@gmail.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
jkleinsc
added a commit
that referenced
this pull request
Aug 28, 2026
* chore: bump node in DEPS to v24.19.0 * chore: remove upstreamed patch Ref: nodejs/node#64053 Co-Authored-By: GitHub Copilot <copilot@github.com> * chore: update patches (trivial only) Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): add perfetto trace agent Backport Node's Perfetto tracing agent now that Chromium V8 no longer exposes the legacy tracing controller APIs. Ref: nodejs/node#64565 Ref: nodejs/node#64721 Co-Authored-By: GitHub Copilot <copilot@github.com> * node#64565: src: rename legacy trace event headers Ref: nodejs/node#64565 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): sample delay per event loop iteration Ref: nodejs/node#62935 Ref: nodejs/node#64480 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): avoid redundant std::get_if<>() call Ref: nodejs/node#64094 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): add perfetto trace agent Ref: nodejs/node#64565 Co-Authored-By: GitHub Copilot <copilot@github.com> * node#64053: src: abstract tracing agent for legacy and perfetto Ref: nodejs/node#64053 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): add perfetto trace agent Ref: nodejs/node#64565 Co-Authored-By: GitHub Copilot <copilot@github.com> * node#64053: src: abstract tracing agent for legacy and perfetto Ref: nodejs/node#64053 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): support native IPC serialization in V8 sandbox Ref: nodejs/node#63933 Co-Authored-By: GitHub Copilot <copilot@github.com> * test: hide output package.json in node spec runner Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package. Ref: nodejs/node#44713 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): account for libc++ rm error on Electron Linux Node's fs.rmSync() delegates recursive deletion to std::filesystem::remove_all(). Electron's Linux build uses libc++, which reports ENOTEMPTY here while Node's libstdc++ build reports EACCES. Ref: nodejs/node#57103 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): mark worker stack-size test flaky Ref: nodejs/node#33085 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): restore user timing trace events Ref: #50591 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): own fallback tracing controller Ref: nodejs/node#64565 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): release cppgc wrapper tracking nodes Ref: nodejs/node#56534 Co-Authored-By: GitHub Copilot <copilot@github.com> * test: extend cpp heap remote app timeout The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run. Ref: #52447 Co-Authored-By: GitHub Copilot <copilot@github.com> * fix(patch): remove unused legacy tracing backend Electron builds Node exclusively with Perfetto since #50591. Wire the upstream Perfetto agent directly and drop the legacy header split and dual-backend source lists. Ref: #50591 Ref: nodejs/node#64565 Co-Authored-By: GitHub Copilot <copilot@github.com> * docs: better explanation of test_account_for_libc_rm_error_on_electron_linux.patch * refactor: node tracing agent and track event registration (#52678) * fix: register Node tracing in utility processes The Node upgrade moved tracing setup out of JavascriptEnvironment, but the utility process did not adopt the explicit registration used by other embedded Node hosts. Register its TrackEvent data source with Chromium before creating the isolate. Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> * chore: update patches (trivial only) * chore: update patches (trivial only) Co-Authored-By: GitHub Copilot <copilot@github.com> * Revert "fix(patch): mark worker stack-size test flaky" This reverts commit f2e5cb5. * fixup! support native IPC serialization in V8 sandbox * chore: update patch * chore: address review feedback (cherry picked from commit b8f475c) * fixup! support native IPC serialization in V8 sandbox Allocate ValueSerializer buffers as V8 backing stores and retain the original backing store when adopting the released buffer. This preserves the shared allocator lifetime when serialized buffers are transferred from a worker and outlive its isolate. (cherry picked from commit f35b26d) * fixup! refactor: node tracing agent and track event registration (cherry picked from commit d898f33) --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Charles Kerr <charles@charleskerr.com> Co-authored-by: GitHub Copilot <copilot@github.com> Co-authored-by: Robo <hop2deep@gmail.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
MarshallOfSound
pushed a commit
that referenced
this pull request
Oct 29, 2026
* test: wait on conditions instead of fixed timeouts (#52447) The "keeps a ChunkedDataPipeReadableStream alive while a read is pending" test failed under Linux ASAN because hard-coded 5s timeout caps expired before the slower instrumented build made progress. Replace the fixed timeouts with condition-based waits: await the real promises for handler setup and the pending read, poll GC via gcUntil() until the stream is actually released, and abort the request before the release check so the live request no longer roots the stream. Test intent and assertions are unchanged. Skip-Lint: test cleanup (cherry picked from commit 9c78554) (cherry picked from commit 9d9ca50) * test: migrate cpp-heap specs to v8 heap snapshot helpers (#55243) Split out of #55229 and extended per review there. - heapsnapshot-helpers.js reads V8's flat snapshot arrays: takeHeapSnapshot()/parseHeapSnapshot(), countHeapSnapshotNodes(), snapshotContainsRetainingPath() and countRetainingPathNodes(). Path steps skip weak edges and can also match edge type, edge name, node type and detachedness; each node counts once however many paths reach it. The old object-graph containsRetainingPath() is removed. - Every recordState() + containsRetainingPath() check in cpp-heap.spec.ts uses the new helpers, and --expose-internals is dropped. - The node-counting checks (powerMonitor, autoUpdater, the two webContents before/after counts and api-ipc's ObjectTemplateInfo count) use countHeapSnapshotNodes() over the node array; the occurrences checks (three Session roots, one WebFrameMain root) count distinct nodes. - The renderer cached-templates test keeps webContents.takeHeapSnapshot() and counts its markers with countHeapSnapshotNodes() instead of createJSHeapSnapshot(). - Tests that make the remote app quit inside remotely() register their exit/close listener first, so a fast exit is not missed (19 tests). - 'should settle an in-flight call stack reply after frame disposal' keeps the page running script so the V8 interrupt is serviced, and awaits the result instead of racing a 5 s timeout. - 'should release the root for a detached frame after navigation' runs its app with --disable-renderer-backgrounding so the old page's unload IPC is not dropped. Claude-Session: https://claude.ai/code/session_01LPMvJBQiyP6b7QjatACmnS Co-authored-by: Claude <noreply@anthropic.com> (cherry picked from commit 4d38eab) Adapted for 43-x-y: only the tests that exist on this branch are migrated. Here the session test still expects 4 Session root paths, because WebContents also holds a persistent root to its Session; the new helper counts distinct nodes, so it expects the 3 Sessions instead. (The old helper on this branch misspelled the option, so that count was never actually checked.) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The "keeps a ChunkedDataPipeReadableStream alive while a read is pending" test failed under Linux ASAN because hard-coded 5s timeout caps expired before the slower instrumented build made progress.
Replace the fixed timeouts with condition-based waits: await the real promises for handler setup and the pending read, poll GC via gcUntil() until the stream is actually released, and abort the request before the release check so the live request no longer roots the stream. Test intent and assertions are unchanged.
(cherry picked from commit 9c78554)
Description of Change
Checklist
npm testpassesRelease Notes
Notes: none