chore: bump node to v24.19.0 (main) - #52638
Conversation
9c7456d to
f620808
Compare
jkleinsc
left a comment
There was a problem hiding this comment.
AI review uncovered an issue that needs to be addressed in this PR:
Missing tracing-agent registration in the utility-process Node service
JavascriptEnvironment no longer creates its own tracing agent —
shell/browser/javascript_environment.h
now expects the caller to supply a v8::TracingController* (default nullptr),
and each Node-hosting entry point was updated to call
NodeBindings::InitializeTracingAgent(...) beforehand:
- shell/browser/electron_browser_main_parts.cc —
InitializeTracingAgent(false) - shell/renderer/electron_renderer_client.cc —
InitializeTracingAgent(false) - shell/renderer/web_worker_observer.cc —
InitializeTracingAgent(false) - shell/app/node_main.cc —
InitializeTracingAgent(true)(standalone agent,ELECTRON_RUN_AS_NODE)
shell/services/node/node_service.cc (the
BrowserEnvironment::kUtility service backing utilityProcess.fork()) is the
one path that was not updated — Initialize() calls
js_env_.emplace(node_bindings_->uv_loop()) directly, so tracing_controller
defaults to nullptr and RegisterPerfettoTrackEvent() is never invoked for
this process type.
Impact
Unlike the browser/renderer/worker paths (which intentionally leave
tracing::Agent null but still register the TrackEvent data source via
RegisterPerfettoTrackEvent()), the utility Node service never registers
Node's TrackEvent data source with Chromium's Perfetto client at all.
node.* trace categories emitted from utilityProcess.fork() workloads (fs,
http, async_hooks, etc.) won't be captured by contentTracing, even though the
other three embedded process types work correctly.
Suggested fix
// in NodeService::Initialize, before js_env_.emplace(...)
NodeBindings::InitializeTracingAgent(/*use_standalone_perfetto_client=*/false);
js_env_.emplace(node_bindings_->uv_loop());|
Heads up: Windows CI builds moved to new runners on Monday and the old ones have now been removed. This branch predates that, so its Windows build jobs still point at the old runners and will sit queued forever if CI runs again. Rebasing on |
5975bc4 to
dd007b5
Compare
dd007b5 to
0008a76
Compare
0008a76 to
4708765
Compare
Ref: nodejs/node#64053 Co-Authored-By: GitHub Copilot <copilot@github.com>
Co-Authored-By: GitHub Copilot <copilot@github.com>
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>
Ref: nodejs/node#64565 Co-Authored-By: GitHub Copilot <copilot@github.com>
Ref: nodejs/node#62935 Ref: nodejs/node#64480 Co-Authored-By: GitHub Copilot <copilot@github.com>
Ref: nodejs/node#64094 Co-Authored-By: GitHub Copilot <copilot@github.com>
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>
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>
Ref: nodejs/node#33085 Co-Authored-By: GitHub Copilot <copilot@github.com>
Ref: #50591 Co-Authored-By: GitHub Copilot <copilot@github.com>
Ref: nodejs/node#64565 Co-Authored-By: GitHub Copilot <copilot@github.com>
Ref: nodejs/node#56534 Co-Authored-By: GitHub Copilot <copilot@github.com>
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>
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>
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>
This reverts commit f2e5cb5.
4708765 to
61cddf0
Compare
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.
dsanders11
left a comment
There was a problem hiding this comment.
Won't block on my one remaining unresolved comment. LGTM, happy to see the Perfetto stuff land and thanks for working through it all everyone. 🙂
|
Release Notes Persisted
|
Updating Node.js to v24.19.0.
See all changes in v24.18.1..v24.19.0
Notes: Updated Node.js to v24.19.0.