-
Notifications
You must be signed in to change notification settings - Fork 29.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Latest NodeJS 4.9.0, 6.14.0, 8.11.0, 9.9.0 and 9.10.0 not running on PPCLE Red Hat Enterprise Linux Server release 7.3 #19530
Comments
/cc @nodejs/build |
cc/ @jBarz @mhdawson @refack , but I think we have moved up to gcc 4.9 from gcc 4.8 recently. See also nodejs/build#1020 |
I think use of gcc 4.9 could explain this. |
Hm, the problem is this (from here):
I suppose the solution is to revert the 4.8->4.9 upgrade in <= v9.x. |
Using rpath option at the link step will force the binary to use the 4.9 libraries? export CC=/usr/bin/gcc-4.9 |
@jBarz The problem is that there are no 4.9 libs for PPCLE Red Hat Enterprise Linux Server 7.x. Seems 9.9.0 was at least partly built with GCC 4.9.4:
As reference for x86 I get:
|
Does this indicate that NodeJS 10 will use GCC 4.9 and as a result doesn't work out of the box on our Red Hat Enterprise Linux Server 7.x? |
That seems likely. |
V8 has started to use C++14 features (AIUI) which will necessitate gcc 4.9. However if it's not straightforward to get the gcc 4.9 libstdc++ on RHEL 7, then we probably need to document how it should be done for Node users. I guess alternatively it might be a good time to consider statically linking against libstdc++. |
I've thought about that (but libc++ because license) but I foresee an endless stream of issues with native modules. For example, consider a module Longer term it might be worth it but it's probably not going to be an easy transition. I don't know if we could get it ready in time for Node.js 10 and have all the kinks worked out. |
Don't you build your
which is a linker script that dynamically links to the system Maybe the solution for PPCLE RHEL would be to build with a |
Toolchain seems to be unchanged; 9.10.0 seems to be like 9.9.0. So from my point of view this issue can be closed as the root cause is understood and it's clear that there is no way around for NodeJS 10 to raise the requirements. I don't care much about the final NodeJS 9 releases. |
Just found that all fresh NodeJS versions are effected including 4.9.0, 6.14.0, 8.11.0. |
Ok, the problem seems to be that we were staging the 4.9 compiler and I thought the default would stay as 4.8, but it looks like it is actually 4.9., I'll add the selection logic and we can validate that it resolves the issue on 4.X and 6.x. The lowest stated version was 4.9 for 8.X so the selection logic uses 4.9 for 8.X and above. However, we'll have to consider that again given the info in this thread. Did anybody check if this affects x86 as well ? |
x86 is not effected |
@Flarna so on x86 4.9 is compatible with 4.8 but on PPCLE that is not the case? |
@Flarna is there a version newer than 4.9 that is easier to get on RHEL 7.X ? |
To me it looks more like x86 is still built with GCC 4.8. See my #19530 (comment) above where I used readelf to get GCC infos.
Honestly speaking I don't know what is available as I'm just an user. In our addon build we use GCC 6.4.0 but it's a self built GCC patched for our needs. We link statically to avoid issues like this but I don't think our solution is directly applicable to NodeJS. In our addon we take care to not expose any C++ symbol but NodeJS can't do that as it has to export V8 API. |
@Flarna can you test out this version: It is the 6.14.0 release rebuilt with the detection logic so that it built with the 4.8 compiler. If that works then we can decide if we should change the logic for 8.x and work on respining the builds. |
Should we be planning for a member patch release for all lines? |
@mhdawson Yes, this version works. |
@Flarna thanks @MylesBorins, not sure what you mean by a member patch release, but what we need is to rebuild the le releases for 4, 6, and 8 (for now I'm just going to make 8 build with 4.8 instead of 4.9 until we figure out the story across platforms). There are no code changes so I think we could just rebuild and republish for ppcle unless that's not something we want to do. I still need to do one update to get it right for 8 and then we could rebuild with the ppcle job I created. |
@MylesBorins can you approve nodejs/build#1201. Once that lands and I validate with a build in test, we can respin the builds. |
We generally don't replace already published builds to avoid confusion. Usual practice is to do a new patch release. |
Tested the new versions, they all run -version as well as a starting the console and being able to print 'test'. I think they are good. |
New versions are released. Closing the issue. Please let me know if it isn't fixed and I'll reopen |
I can confirm that all four NodeJs versions run fine on our RedHat Enterprise 7.3. |
@mhdawson Please confirm if same problem exists for NodeJS-10.15.3 also. And, suggest some way to make NodeJS-10.15.3 work for RHEL 7.x (PPCLE) (Power8) It is making me cry :'( |
@mukeshkmr776 NodeJs 10 and newer uses gcc 4.9 and as a result it wont run on these old platforms. |
@Flarna Thanks for confirming this. Now, I am not getting gcc version >=4.9.x even after updating my server rpm through yum. Could you please provide me the binary libstdc++.so.6 or complete rpm or a link to it so that I can move ahead. :( One observation, then how come Nodejs 10.15.3 is working on my another system of RHEL 7.x (ppc) with gcc-4.8.x ???? :/ |
For Node.Js < 10 this was fixed in node builds as they stepped back to gcc 4.8.
Sorry, don't know but maybe ppc doesn't require a newer libstdc++ but pccle does. As far as I remember we had no problems on x86 either that time, only ppcle (we never used ppc). |
@Flarna So what should I do then? :| Nodejs v10 working on ppc64, but on ppc64le. Though both had same gcc 4.8.x versions :/ |
NodeJs v10 uses gcc 4.9.4 not 4.8. I would say if it works on ppc64 it's just luck. As mentioned above x86 worked also for me that time. I think you have just two options (I assume RedHat does not provide anything helpful here):
Even if you get Node 10 running it will be not a future prove solution as NodeJs 12 has moved to gcc 6.3 (GLIBCXX 3.4.22) as far as I know. |
Was this fix applied to the build process for the ppc64le binaries? nodejs/build#1548 I've been looking into this issue the last couple of days and it really is a mystery that the build for ppc64le is linked to 3.4.20. x86_64 builds are linked to the same version of gcc and work fine with 4.8.5, which provides 3.4.19: ` It seems to me like a bug in the build process that the ppc64le binaries are linking against 3.4.20. This only affects 10.x and later versions, as we know. I'm running a build of 10.15.2 manually on a ppc64le machine and seeing if I can force it to use gcc 4.8, will see if that does anything, but in the mean time can we check to see if the fix applied above was applied to the ppc64le build pipeline? |
Further evidence that this is a broken build process. When I dump out the comment section of the binaries for ppc vs x86 I get very, very different results: x86_64: String dump of section '.comment': [root@personal-justin-amqload1 bin]# ppc64le: String dump of section '.comment': [jreock@dc3-zsnode1 bin]$ |
We are in process of beginning to build 10x/ppcle on centos7 with devtools-6, which should extend the backwards compatibility of the official binaries to even older machines than those currently supported. See nodejs/build#1907 among others. We hope this will be released in the next month or so. |
Thanks for the reply, Sam – this is a great approach. Will look forward to the push, let me know if I can help at all!
…-Justin
From: Sam Roberts <[email protected]>
Reply-To: nodejs/node <[email protected]>
Date: Thursday, September 5, 2019 at 12:22 PM
To: nodejs/node <[email protected]>
Cc: Justin Reock <[email protected]>, Comment <[email protected]>
Subject: Re: [nodejs/node] Latest NodeJS 4.9.0, 6.14.0, 8.11.0, 9.9.0 and 9.10.0 not running on PPCLE Red Hat Enterprise Linux Server release 7.3 (#19530)
We are in process of beginning to build 10x/ppcle on centos7 with devtools-6, which should extend the backwards compatibility of the official binaries to even older machines than those currently supported. See nodejs/build#1907<nodejs/build#1907> among others. We hope this will be released in the next month or so.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub<#19530?email_source=notifications&email_token=AFUQ75SRYPDIBKY7DUWJPQTQIEW33A5CNFSM4EW3GJ7KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD57XFKA#issuecomment-528446120>, or mute the thread<https://github.com/notifications/unsubscribe-auth/AFUQ75WKZOCLPFTIBDBZSGTQIEW33ANCNFSM4EW3GJ7A>.
|
Once we have builds, it would be useful to confirm for us they help your situation. |
Absolutely! I'll be keeping an eye on this and will confirm functionality. |
Please update once this is fixed for Nodejs-v10.x on PPC64LE (RHEL-7.x). |
The lastest 10.x Nightly was build so that it should run there now. The next Node.js 10.x release should address this as well. @BethGriggs can you chime in with the target for that? |
@mhdawson I guess it will be in upcoming release i.e. v10.16.4.... Do we have release date for this upcoming release? |
First -rc within next couple days, release in next 2-3 weeks. |
@sam-github Thanks for the info. : ) |
@sam-github: is -rc available? 😕 |
@BethGriggs said "soonish" this morning, I believe. Maybe nightlies would be interesting to you? https://nodejs.org/download/nightly/v10.16.4-nightly20190923859d47593e9fd97e6a9eae6eeb8b6e910acfe434/ |
@sam-github Thanks for the link. But can't be used in production. : ( |
I tried this in one of our centos 7 containers with following result: 12.11.0, 12.11.1 and above nightly of 10.16.4 work. so looks good! as reference older node.js versions in same container:
10.16.3 fails with
|
@Flarna thanks for the feedback |
@sam-github |
@mukeshkmr776, the proposal is at #29875 and due to be released 22nd October |
@BethGriggs Thanks Beth! 👍 phew |
I found that NodeJS 9.9.0 is not running on our PPCLE machine, NodeJS 9.8.0 was fine.
Problem reported:
/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.20' not found
I did some objdump and I found following symbol in 9.9.0 which was not used in 9.8.0:
Is a new compiler version used starting with 9.9.0? And is this intended?
Some details about our machine:
Red Hat Enterprise Linux Server release 7.3
ldd (GNU libc) 2.17
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16)
The text was updated successfully, but these errors were encountered: