-
Notifications
You must be signed in to change notification settings - Fork 29.6k
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
npm --version segfaults on v7.7.3 linux ppc64 (BE) only ON RHEL 7 #11882
Comments
To add some more info, the version downloaded was https://nodejs.org/dist/latest-v7.x/node-v7.7.3-linux-ppc64.tar.gz. Running |
Can you obtain a stack trace? |
Ouch - this from a RHEL70 box (EDIT: Also occurs on 7.1)
|
@sxa555 Can you post the output of |
FYI I've built 7.7.3 from commit 9c68a69 locally and it doesn't fail in the same way. This is with this version of gcc (have the build boxes been upgraded recently to 4.9? I haven't used that yet) gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-16) |
@bnoordhuis (For reference this output was just running "node" without any parameters)
|
Looks like an almost-nullptr bug. It tries to store a byte at the address in r10, which is 0xf:
r3 (first function argument) is moved into r10 a few lines up so it would seem |
The compiler version on the test/build boxes is:
|
The binaries seem to run ok on the machines on which they were built:
|
|
output just before crash with LD_DEBUG=all
|
On RHEL machine:
On community machine
|
I wonder if its the glibc version. I believe we had run the community binaries on our RHEL 7 machines in the past, but possibly node is now using something before that is not compatible across glibc versions 2.17 and 2.19 |
@sxa555 do you have an environment where you can install a newer glibc on RHEL 7 and see if that makes a difference ? |
Updated title to indicate crash is only on RHEL 7 as binaries seem to run on on ubuntu 14 BE. |
We're able to run v7.50 binaries, but not v7.6.0 and later:
|
The V8 5.4 -> 5.5 upgrade in 61870b4 seems like the most obvious culprit. Can you check if that commit fails and the preceding commit works? |
For the 8.0.0 nightlies (from https://nodejs.org/download/nightly/):
|
I guess this is also pointing to the V8 5.4->5.5 update:
|
node works if we compile and run locally -- The failures are with the binaries from nodejs.org running locally. |
The gcc version for the test-osuosl-ubuntu14-ppc64-be-3:~$ gcc --version
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4 |
RHEL 7.2 suffers the same symptoms - it is supplied with gcc/g++ 4.8.5-4 - even later than the Ubuntu 14.04 one, which suggests it's either a compiler bug specific to Ubuntu''s specific gcc version (I'm thinking unlikely but not impossible) or more likely the new V8 is triggering something that is using some functionality from glibc later than 2.17 (RHEL7 has 2.17, Ubu14.04 has 2.19) Going the other way round, node7 binaries built on RHEL7 appear to run ok on Ubuntu 14.04 - possibly because it's built against an earlier glibc) so I wonder if a CentOS build machine (same as x64?) might be a better choice than Ubuntu 14.04. For the record, we have built with Ubuntu 14.04.1 on PPC-LE (Note: the BE community machines are 14.04.5) and that appears to run ok on RHEL7. (I've also tried building my own glibc 2.19 on RHEL7 but that didn't execute properly with anything on the system) |
I've got my own clean Ubuntu 14.04 now that I can experiment with and replicates the (lack of) problem on that platform. That at least confirms it's not anything magic on the CI machines that's making it work ;-) |
Have tried building my own gcc/g++ (version 4.8.5) and that still causes a crash in the same place when run on RHEL7, so whatever we're seeing isn't an issue specific to Ubuntu's compiler. Updating glibc on the RHEL7 box is "non-trivial" so I can't really recommend such a course of action (needs the dynamic loader and other stuff updated) |
It's the Clear function at the end of https://github.com/nodejs/node/blob/v7.x/deps/v8/src/regexp/jsregexp.cc that's causing the memset call, which is invoked from line 1472 of https://github.com/nodejs/node/blob/v7.x/deps/v8/src/heap/heap.cc. |
For reference: I did also try using the headers from glibc 2.17 (the RHEL version) on the ubuntu 14.04 build system but that still seemed to cause a crash in the same place. |
@bnoordhuis quick ping in case you have any more suggestions, otherwise it looks like there's not much we can do here. |
No other suggestions. I'll go ahead and close it out. |
An interesting link that tracks abi compatibility between versions: https://abi-laboratory.pro/tracker/timeline/glibc/ incompatible changes between 2.17 and 2.18 are related to
2.19 shows as 100% compatible with 2.17 Its not obvious from the description of the crash that it is related to either of those two things, |
Running
node --version
works on this platform and version, but runningnpm --version
causes a segmentation fault and core dump.cc/ @gibfahn who helped with initial diagnosis
The text was updated successfully, but these errors were encountered: