Repository navigation
12.11.0 on PPCLE requires libatomic.so.1 #29718
Description
Activity
- changed the title
[-]Node 12.11.0 is not running on PPCLE Ubuntu 18.04 [/-][+]12.11.0 is not running on PPCLE Ubuntu 18.04 - missing libatomic.so.1[/+]on Sep 26, 2019 - changed the title
[-]12.11.0 is not running on PPCLE Ubuntu 18.04 - missing libatomic.so.1[/-][+]12.11.0 on PPCLE Ubuntu 18.04 required libatomic.so.1[/+]on Sep 26, 2019 - changed the title
[-]12.11.0 on PPCLE Ubuntu 18.04 required libatomic.so.1[/-][+]12.11.0 on PPCLE Ubuntu 18.04 requires libatomic.so.1[/+]on Sep 26, 2019 - addedppcIssues and PRs related to the Power architecture.Issues and PRs related to the Power architecture.
on Sep 26, 2019 I think 12.11.0 is the first PPCLE 12.x release we've done on Centos 7 (nodejs/build#1885) instead of the End-of-Life Ubuntu 14.04.
cc @nodejs/platform-ppc @sam-github
I can confirm that a simple
apt-get install libatomic1results in a working 12.11.0 on my PPCLE machine.- changed the title
[-]12.11.0 on PPCLE Ubuntu 18.04 requires libatomic.so.1[/-][+]12.11.0 on PPCLE requires libatomic.so.1[/+]on Sep 26, 2019 Just found that my description regarding the used platform is incomplete.
I run node in a docker container usingubuntu:16.04as base image;18.04.1is the version of the docker host.FYI @sam-github
It was my observation and intention that devtoolset builds on centos7 would statically link in more of the lib dependencies, avoiding this problem. I'm looking into why that didn't happen, but rebuilds are bit slow because of nodejs/build#1927
I don't think the toolset handles libraries other that libc++
So far I have confirmed that linking on ubuntu14.04 with g++-6 uses
...tools/v8_gypfiles/libv8_initializers.a -latomic -ldl -lrt -lm ..., and the identical linker command line is
used on centos7 with devtoolset-6.On ubuntu/gcc-6 the linked executable has no dependency on libatomic, and on centos/devtoolset-6 it does.
So the open question might be not why centos7 does depend on the specified libs, but why ubuntu doesn't.
I'll keep poking at this.
@Flarna I removed the part of your description where it listed the dependency on
libdl.so.2as new, in your output you can it is present in both, it must have been a typo.What I've found so far is:
- Neither of
-latomic -lrtare required to link node on ubuntu/gcc or centos7/devtoolset - ubuntu gcc seems to ignore unused link libs, devtoolset seems to generate executables with a reference to them.
As to why that is, or what can be done about it, still looking.
On our side, the obvious fix would be to not specify unnecessary libraries on the node link lines. I tried removing
ppc64lefrom the platforms that need-latomicand got a working binary on ubuntu and centos7. I'd have to add a conditional to do the same for-lrt(it looks to be the POSIX.4 realtime APIs).@targos any comment on that? The link libs seem to have been added with V8 7.5, #28005 from #27375, but since v8 doesn't build on ppc64le (to my knowlege), they might just have added them to be safe, on the assumption they'd be unused if they weren't needed.
- Neither of
@nodejs/v8 see above, any comment on what I asked targos?
This is the relevant config in V8's BUILD.gn: https://github.com/v8/v8/blob/318d66d95f94487cdac2322795a63ea613ef943b/BUILD.gn#L3381-L3388
We own
v8.gypso we could deviate from upstream here, if libatomic is really never needed (it might depend on certain build options).2 remaining items
@nodejs/releasers note that 10.x is also switching to centos7 ppcle. I doesn't depend on libatomic, but it does depend on librt.so.1, and that is new i n10.16.4
root@test-osuosl-ubuntu1404-ppc64--le-1:/tmp/node-v10.16.4-nightly20190923859d47593e9fd97e6a9eae6eeb8b6e910acfe434-linux-ppc64le/bin# ldd node linux-vdso64.so.1 => (0x00003fff9cba0000) libdl.so.2 => /lib/powerpc64le-linux-gnu/libdl.so.2 (0x00003fff9cb60000) librt.so.1 => /lib/powerpc64le-linux-gnu/librt.so.1 (0x00003fff9cb30000) libstdc++.so.6 => /usr/lib/powerpc64le-linux-gnu/libstdc++.so.6 (0x00003fff9c9a0000) libm.so.6 => /lib/powerpc64le-linux-gnu/libm.so.6 (0x00003fff9c8b0000) libgcc_s.so.1 => /lib/powerpc64le-linux-gnu/libgcc_s.so.1 (0x00003fff9c870000) libpthread.so.0 => /lib/powerpc64le-linux-gnu/libpthread.so.0 (0x00003fff9c830000) libc.so.6 => /lib/powerpc64le-linux-gnu/libc.so.6 (0x00003fff9c660000) /lib64/ld64.so.2 (0x00000000517d0000) root@test-osuosl-ubuntu1404-ppc64--le-1:/tmp/node-v10.16.4-nightly20190923859d47593e9fd97e6a9eae6eeb8b6e910acfe434-linux-ppc64le/bin#Speculative fix: #29729
- added a commit that references this issue
on Oct 1, 2019 - added a commit that references this issue
on Oct 1, 2019 - added 2 commits that reference this issue
on Oct 9, 2019 @sam-github
We observed this shared lib dependency on Node 14 armv7l builds as well. If this is finally intended for Linux builds in general of for most architectures, it would be good to add it to the docs: https://github.com/nodejs/help/wiki/Installation#how-to-install-nodejs-via-binary-archive-on-linuxReacted by mrdick47, zodern and Jonathan Frank- added a commit that references this issue
on Jul 27, 2026
node.js 12.11.0 is not starting up on my PPCLE machine where 12.10.0 was running fine.
Error seen:
node: error while loading shared libraries: libatomic.so.1: cannot open shared object file: No such file or directoryIt seems that 12.11.0 has new dependencies to
libatomic.so.1andlibrt.so.1:Is this an intended change?