Skip to content

12.x Linux Binaries no longer run on X86 ubuntu 12.04? #1773

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

Closed
mhdawson opened this issue Apr 16, 2019 · 8 comments
Closed

12.x Linux Binaries no longer run on X86 ubuntu 12.04? #1773

mhdawson opened this issue Apr 16, 2019 · 8 comments

Comments

@mhdawson
Copy link
Member

mhdawson commented Apr 16, 2019

Failure in latest node-addon-api tests may indicate that something in the build changes as part of the 12.x readiness means that the release binaries no longer run on ubuntu 12.04

https://ci.nodejs.org/job/node-test-node-addon-api/MACHINE=ubuntu1204-64/1999/console
.

+ node -v
node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.17' not found (required by node)
node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.16' not found (required by node)
Build step 'Conditional steps (multiple)' marked build as failure

@rvagg

@mhdawson
Copy link
Member Author

mhdawson commented Apr 16, 2019

I'm not sure this was expected so would like @rvagg to confirm. If it is expected then we can exclude ubuntu12 for the node-addon-api tests for 12.x and higher. It does not use the groovy version selector script.

@rvagg
Copy link
Member

rvagg commented Apr 17, 2019

Yes, it's unfortunately expected. The new BUILDING.md:

| GNU/Linux        | x64              | kernel >= 3.10, glibc >= 2.17   | Tier 1       | e.g. Ubuntu 16.04 <sup>[1](#fn1)</sup>, Debian 9, EL 7 <sup>[2](#fn2)</sup> |

12.04 has glibc 2.15.

Ubuntu 14.04 has 2.19 so might be OK. What we're not reflecting is stdc++ version which is starting to be important with more c++ stdlib features being used by both V8 and Node. GCC implies libstdc++.so.6.0.22 which is has a symbol version of GLIBCXX_3.4.22. I guess it's possible that Node 12 starts working on Ubuntu 14.04 because it doesn't use everything there but as we add things it stops. Maybe we need to expand the note in BUILDING.md to talk about this? I'm not even confident I know tbh.

/cc @refack

@mhdawson
Copy link
Member Author

K thanks for confirming. Currently, it still seems to run on 14.04.

@refack
Copy link
Contributor

refack commented Apr 17, 2019

I audited the nightly binary after #1766 (it was built on centos7-64-gcc6) and still the highest GLIBCXX is GLIBCXX_3.4.18, which as expected is GCC-4.8 level (CentOS 7 default):
https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html
image
devtoolset FTW

@mhdawson
Copy link
Member Author

Updated N-API job to exclude 1204. Closing.

@refack
Copy link
Contributor

refack commented Apr 17, 2019

Node 12 starts working on Ubuntu 14.04 because it doesn't use everything there but as we add things it stops.

FTR if the binary is linked to even one GLIBCXX_3.4.18 symbol it will not load if the .so isn't new enough. So the expectation is that node@12 will be "maximally backwards broken" on day 1.

@rvagg
Copy link
Member

rvagg commented Apr 18, 2019

thanks @refack I might consider how to put some of this in BUILDING.md since it now covers official binaries

@refack
Copy link
Contributor

refack commented Apr 18, 2019

More FTR, when build with GCC-6 (-std=gnu++1y) on ubuntu or when linked fully dynamically to libstdc++ we get this:

Version References:
  required from librt.so.1:
    0x09691a75 0x00 31 GLIBC_2.2.5

  required from libgcc_s.so.1:
    0x0b792654 0x00 27 GCC_3.4
                       ^^^^^^^

  required from libm.so.6:
    0x09691a75 0x00 12 GLIBC_2.2.5

  required from libpthread.so.0:
    0x09691973 0x00 28 GLIBC_2.3.3
...

  required from libc.so.6:
    0x06969185 0x00 33 GLIBC_2.25
                             ^^^^
...
  required from libdl.so.2:
    0x09691a75 0x00 03 GLIBC_2.2.5

  required from libstdc++.so.6:
...
    0x0297f870 0x00 07 GLIBCXX_3.4.20
                               ^^^^^^    
...
    0x0bafd179 0x00 02 CXXABI_1.3.9
                              ^^^^^

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants