Skip to content

src: disable abseil deadlock detection - #57582

Merged
nodejs-github-bot merged 2 commits into
nodejs:mainfrom
legendecas:abseil-deadlock
Apr 2, 2025
Merged

src: disable abseil deadlock detection#57582
nodejs-github-bot merged 2 commits into
nodejs:mainfrom
legendecas:abseil-deadlock

Conversation

@legendecas

@legendecaslegendecas commented Mar 21, 2025

Copy link
Copy Markdown
Member

Abseil deadlock detection is reporting false positives in tests in V8.
Abseil mutexes are not used in node core, so disable it for now.

Refs: nodejs/node-v8#301

Abseil deadlock detection is reporting false positives in tests.
Disable it for now.
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Review requested:

  • @nodejs/gyp
  • @nodejs/startup

@nodejs-github-botnodejs-github-bot added build Issues and PRs related to build files or the CI. c++ Issues and PRs that require attention from people who are familiar with C++. needs-ci PRs that need a full CI run. labels Mar 21, 2025
@imronsman

This comment was marked as off-topic.

@codecov

codecovBot commented Mar 21, 2025

Copy link
Copy Markdown

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 90.22%. Comparing base (8b2098f) to head (8193761).
Report is 328 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #57582 +/- ##
==========================================
- Coverage 90.22% 90.22% -0.01% 
==========================================
Files 630 630 Lines 185045 185055 +10 Branches 36243 36247 +4 ==========================================
+ Hits 166961 166963 +2 - Misses 11034 11037 +3 - Partials 7050 7055 +5 
Files with missing linesCoverage Δ
src/node.cc73.55% <100.00%> (+0.03%)⬆️

... and 36 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@targos

Copy link
Copy Markdown
Member

Windows build error:

 abseil.lib(per_thread_sem.obj) : error LNK2019: unresolved external symbol "public: __cdecl absl::synchronization_internal::Win32Waiter::Win32Waiter(void)" (??0Win32Waiter@synchronization_internal@absl@@QEAA@XZ) referenced in function AbslInternalPerThreadSemInit [D:\a\node\node\node_mksnapshot.vcxproj]
abseil.lib(per_thread_sem.obj) : error LNK2019: unresolved external symbol "public: bool __cdecl absl::synchronization_internal::Win32Waiter::Wait(class absl::synchronization_internal::KernelTimeout)" (?Wait@Win32Waiter@synchronization_internal@absl@@QEAA_NVKernelTimeout@23@@Z) referenced in function AbslInternalPerThreadSemWait [D:\a\node\node\node_mksnapshot.vcxproj]
abseil.lib(per_thread_sem.obj) : error LNK2019: unresolved external symbol "public: void __cdecl absl::synchronization_internal::Win32Waiter::Post(void)" (?Post@Win32Waiter@synchronization_internal@absl@@QEAAXXZ) referenced in function AbslInternalPerThreadSemPost [D:\a\node\node\node_mksnapshot.vcxproj]
abseil.lib(per_thread_sem.obj) : error LNK2019: unresolved external symbol "public: void __cdecl absl::synchronization_internal::Win32Waiter::Poke(void)" (?Poke@Win32Waiter@synchronization_internal@absl@@QEAAXXZ) referenced in function "public: static void __cdecl absl::synchronization_internal::PerThreadSem::Tick(struct absl::base_internal::ThreadIdentity *)" (?Tick@PerThreadSem@synchronization_internal@absl@@SAXPEAUThreadIdentity@base_internal@3@@Z) [D:\a\node\node\node_mksnapshot.vcxproj]
out\Release\node_mksnapshot.exe : fatal error LNK1120: 4 unresolved externals [D:\a\node\node\node_mksnapshot.vcxproj]

Looks like we need this change from 3d1fe71#diff-7ec0a6942f03ad6ff24215a31b1b45a378ee21b2cba5f79937281c5f5528d2bf

image

@targostargos mentioned this pull request Mar 22, 2025
6 tasks
@targostargos added request-ci Add this label to start a Jenkins CI on a PR. commit-queue-squash Add this label to instruct the Commit Queue to squash all the PR commits into the first one. labels Apr 1, 2025
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Apr 1, 2025
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@targostargos added the commit-queue Add this label to land a pull request using GitHub Actions. label Apr 2, 2025
@nodejs-github-botnodejs-github-bot removed the commit-queue Add this label to land a pull request using GitHub Actions. label Apr 2, 2025
@nodejs-github-bot
nodejs-github-bot merged commit 78af51c into nodejs:mainApr 2, 2025
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Landed in 78af51c

@legendecas
legendecas deleted the abseil-deadlock branch April 2, 2025 09:31
RafaelGSS pushed a commit that referenced this pull request May 1, 2025
Abseil deadlock detection is reporting false positives in tests.
Disable it for now.
PR-URL: #57582
Refs: nodejs/node-v8#301
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Stefan Stojanovic <stefan.stojanovic@janeasystems.com>
Reviewed-By: Darshan Sen <raisinten@gmail.com>
RafaelGSS pushed a commit that referenced this pull request May 2, 2025
Abseil deadlock detection is reporting false positives in tests.
Disable it for now.
PR-URL: #57582
Refs: nodejs/node-v8#301
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Stefan Stojanovic <stefan.stojanovic@janeasystems.com>
Reviewed-By: Darshan Sen <raisinten@gmail.com>
@aduh95aduh95 added the backport-requested-v22.x PRs awaiting manual backport to the v22.x-staging branch. label May 6, 2025
@aduh95

aduh95 commented May 6, 2025

Copy link
Copy Markdown
Contributor

This doesn't land cleanly on v22.x-staging, can you add it to #57982

aduh95 pushed a commit to legendecas/node that referenced this pull request May 18, 2025
Abseil deadlock detection is reporting false positives in tests.
Disable it for now.
PR-URL: nodejs#57582
Backport-PR-URL: nodejs#57982
Refs: nodejs/node-v8#301
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Stefan Stojanovic <stefan.stojanovic@janeasystems.com>
Reviewed-By: Darshan Sen <raisinten@gmail.com>
aduh95 pushed a commit that referenced this pull request May 19, 2025
Abseil deadlock detection is reporting false positives in tests.
Disable it for now.
PR-URL: #57582
Backport-PR-URL: #57982
Refs: nodejs/node-v8#301
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Stefan Stojanovic <stefan.stojanovic@janeasystems.com>
Reviewed-By: Darshan Sen <raisinten@gmail.com>
codebytere added a commit to electron/electron that referenced this pull request May 23, 2025
codebytere added a commit to electron/electron that referenced this pull request May 26, 2025
codebytere added a commit to electron/electron that referenced this pull request May 29, 2025
codebytere added a commit to electron/electron that referenced this pull request Jun 2, 2025
jkleinsc pushed a commit to electron/electron that referenced this pull request Jun 2, 2025
* chore: bump node in DEPS to v22.16.0
* crypto: remove BoringSSL dh-primes addition
nodejs/node#57023
* tools: enable linter in test/fixtures/test\-runner/output
nodejs/node#57698
* src: improve thread safety of TaskQueue
nodejs/node#57910
* buffer: define global v8::CFunction objects as const
nodejs/node#57676
* src: disable abseil deadlock detection
nodejs/node#57582
* zlib: fix pointer alignment
nodejs/node#57727
* chore: fixup patch indices
* src: set default config as node.config.json
nodejs/node#57171
* src: update std::vector<v8::Local<T>> to use v8::LocalVector<T>
nodejs/node#57578
* test: disable chmod tests failing in Docker
nodejs/node#58326
---------
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
codebytere added a commit to electron/electron that referenced this pull request Jun 3, 2025
codebytere added a commit to electron/electron that referenced this pull request Jun 3, 2025
codebytere added a commit to electron/electron that referenced this pull request Jun 3, 2025
codebytere added a commit to electron/electron that referenced this pull request Jun 3, 2025
codebytere added a commit to electron/electron that referenced this pull request Jun 4, 2025
* chore: bump node in DEPS to v22.16.0
* crypto: remove BoringSSL dh-primes addition
nodejs/node#57023
* tools: enable linter in test/fixtures/test\-runner/output
nodejs/node#57698
* src: improve thread safety of TaskQueue
nodejs/node#57910
* buffer: define global v8::CFunction objects as const
nodejs/node#57676
* src: disable abseil deadlock detection
nodejs/node#57582
* zlib: fix pointer alignment
nodejs/node#57727
* chore: fixup patch indices
* src: set default config as node.config.json
nodejs/node#57171
* src: update std::vector<v8::Local<T>> to use v8::LocalVector<T>
nodejs/node#57578
* test: disable chmod tests failing in Docker
nodejs/node#58326
---------
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
@ghostghost mentioned this pull request Jun 8, 2025
kigh-ota pushed a commit to kigh-ota/electron that referenced this pull request Sep 30, 2025
* chore: bump node in DEPS to v22.16.0
* crypto: remove BoringSSL dh-primes addition
nodejs/node#57023
* tools: enable linter in test/fixtures/test\-runner/output
nodejs/node#57698
* src: improve thread safety of TaskQueue
nodejs/node#57910
* buffer: define global v8::CFunction objects as const
nodejs/node#57676
* src: disable abseil deadlock detection
nodejs/node#57582
* zlib: fix pointer alignment
nodejs/node#57727
* chore: fixup patch indices
* src: set default config as node.config.json
nodejs/node#57171
* src: update std::vector<v8::Local<T>> to use v8::LocalVector<T>
nodejs/node#57578
* test: disable chmod tests failing in Docker
nodejs/node#58326
---------
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
jdalton added a commit to SocketDev/socket-cli that referenced this pull request Nov 5, 2025
Disables standalone abseil.lib build on Windows by changing the abseil
target type from 'static_library' to 'none'. This prevents LNK2005
linker errors where absl::Mutex::Dtor and other symbols are defined
in both abseil.lib and v8_libbase.lib.
Root cause: Node.js v24 extracted abseil to a separate build target
(tools/v8_gypfiles/abseil.gyp) to share code between V8 and perfetto.
On Windows with MSVC, this creates duplicate symbol errors because
V8's libbase already includes the necessary abseil implementations.
Solution: On Windows only, configure abseil as type 'none' so headers
are available but no separate static library is built. V8's libbase
continues to provide the abseil implementations it needs.
Error: abseil.lib(abseil.mutex.obj) : error LNK2005: absl::Mutex::Dtor
already defined in v8_libbase.lib(v8_libbase.mutex.obj)
References:
- nodejs/node#57289 (abseil extraction)
- nodejs/node#57582 (abseil deadlock detection)
jdalton added a commit to SocketDev/socket-cli that referenced this pull request Nov 5, 2025
Disables standalone abseil.lib build on Windows by changing the abseil
target type from 'static_library' to 'none'. This prevents LNK2005
linker errors where absl::Mutex::Dtor and other symbols are defined
in both abseil.lib and v8_libbase.lib.
Root cause: Node.js v24 extracted abseil to a separate build target
(tools/v8_gypfiles/abseil.gyp) to share code between V8 and perfetto.
On Windows with MSVC, this creates duplicate symbol errors because
V8's libbase already includes the necessary abseil implementations.
Solution: On Windows only, configure abseil as type 'none' so headers
are available but no separate static library is built. V8's libbase
continues to provide the abseil implementations it needs.
Error: abseil.lib(abseil.mutex.obj) : error LNK2005: absl::Mutex::Dtor
already defined in v8_libbase.lib(v8_libbase.mutex.obj)
References:
- nodejs/node#57289 (abseil extraction)
- nodejs/node#57582 (abseil deadlock detection)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport-requested-v22.xPRs awaiting manual backport to the v22.x-staging branch.buildIssues and PRs related to build files or the CI.c++Issues and PRs that require attention from people who are familiar with C++.commit-queue-squashAdd this label to instruct the Commit Queue to squash all the PR commits into the first one.needs-ciPRs that need a full CI run.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

11 participants

@legendecas@nodejs-github-bot@imronsman@targos@aduh95@jasnell@lpinca@anonrig@StefanStojanovic@RafaelGSS@RaisinTen