Linux install problems - CXXABI_1.3.9 not found

I just did clean installations of Julia and Atom on a CentOS 7 box. I installed Julia in my home directory, but used the system yum setup to install Atom, following instructions in the Flight Manual. I then follow instructions to install Juno, but then when launching Atom again, it fails to load Julia-client yielding the following error. It has been really easy to use on Mac OS X, but I cannot find any mention of this issue documented for Linux here or on GitHub - is there some fix? A step in environment configuration or setup I may have missed?
Thanks.

`/lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /meg1/rick/.atom/packages/julia-client/node_modules/node-pty-prebuilt-multiarch/build/Release/pty.node)`

Stack trace:

Error: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /meg1/rick/.atom/packages/julia-client/node_modules/node-pty-prebuilt-multiarch/build/Release/pty.node)
    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:160:31)
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:722:18)
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:160:31)
    at Module.load (internal/modules/cjs/loader.js:602:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:541:12)
    at Function.Module._load (internal/modules/cjs/loader.js:533:3)
    at Module.require (file:///usr/share/atom/resources/app.asar/static/index.js:72:46)
    at require (/usr/share/atom/resources/app/static/<embedded>:11:146745)
    at Object.<anonymous> (/meg1/rick/.atom/packages/julia-client/node_modules/node-pty-prebuilt-multiarch/lib/unixTerminal.js:26:11)
    at Object.<anonymous> (/meg1/rick/.atom/packages/julia-client/node_modules/node-pty-prebuilt-multiarch/lib/unixTerminal.js:278:3)
    at Module.get_Module._compile (/usr/share/atom/resources/app/static/<embedded>:11:147429)
    at Object.value [as .js] (/usr/share/atom/resources/app/static/<embedded>:11:150977)
    at Module.load (internal/modules/cjs/loader.js:602:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:541:12)
    at Function.Module._load (internal/modules/cjs/loader.js:533:3)
    at Module.require (file:///usr/share/atom/resources/app.asar/static/index.js:72:46)
    at require (/usr/share/atom/resources/app/static/<embedded>:11:146745)
    at Object.<anonymous> (/meg1/rick/.atom/packages/julia-client/node_modules/node-pty-prebuilt-multiarch/lib/index.js:13:20)
    at Object.<anonymous> (/meg1/rick/.atom/packages/julia-client/node_modules/node-pty-prebuilt-multiarch/lib/index.js:51:3)
    at Module.get_Module._compile (/usr/share/atom/resources/app/static/<embedded>:11:147429)
    at Object.value [as .js] (/usr/share/atom/resources/app/static/<embedded>:11:150977)
    at Module.load (internal/modules/cjs/loader.js:602:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:541:12)
    at Function.Module._load (internal/modules/cjs/loader.js:533:3)
    at Module.require (file:///usr/share/atom/resources/app.asar/static/index.js:72:46)
    at require (/usr/share/atom/resources/app/static/<embedded>:11:146745)
    at Object.<anonymous> (/meg1/rick/.atom/packages/julia-client/lib/connection/process/basic.js:3:24)
    at Object.<anonymous> (/meg1/rick/.atom/packages/julia-client/lib/connection/process/basic.js:133:2)
    at Module.get_Module._compile (/usr/share/atom/resources/app/static/<embedded>:11:147429)
    at Object.value [as .js] (/usr/share/atom/resources/app/static/<embedded>:11:150977)

I would suggest trying the export mentioned here. The root of the issue appears to be the same as you are seeing…

Yea, I forgot to say we have used this “trick” but it seems really weird that this error remains unresolved…

I think you would have to talk to the CentOS distro. My guess by reading this is that node-pty (which is an NPM i.e. JavaScript application) checks for CXXABI_1.3.9 exported in libstdc++.so.6. And for whatever reason CentOS doesn’t compile their libstdc++.so.6 with that…or they just don’t support 1.3.9.

On my linux distro doing:

$ nm -D /lib64/libstdc++.so.6 | grep CXXABI
0000000000000000 A CXXABI_1.3
0000000000000000 A CXXABI_1.3.1
0000000000000000 A CXXABI_1.3.10
0000000000000000 A CXXABI_1.3.11
0000000000000000 A CXXABI_1.3.12
0000000000000000 A CXXABI_1.3.2
0000000000000000 A CXXABI_1.3.3
0000000000000000 A CXXABI_1.3.4
0000000000000000 A CXXABI_1.3.5
0000000000000000 A CXXABI_1.3.6
0000000000000000 A CXXABI_1.3.7
0000000000000000 A CXXABI_1.3.8
0000000000000000 A CXXABI_1.3.9
0000000000000000 A CXXABI_FLOAT128
0000000000000000 A CXXABI_TM_1

Shows that that code is defined.

Or I guess whatever Julia module is bringing in node.pty needs to update the LD_LIBRARY path somehow to try to ensure that the correct libstdc++.so file is loaded.

You could try straight up copying Julia’s libstdc++.so.6 into the Atom install dir. If using LD_PRELOAD, make sure you set that before starting Atom.

Yea, we converged on the LD_PRELOAD trick - I guess my main point was it would be nice to have a little note in the installation/setup docs to note that this can be a solution since this problem has obviously arisen before. Unfortunately we’re stuck for practical requirements with the CentOS version with 5 year old compilers etc :cry:
Thanks for the responses and tips!

I added an entry to our FAQ.

1 Like

Great!