Bug 1106559 - node: error while loading shared libraries: libv8.so.v8314-3.14.5
Summary: node: error while loading shared libraries: libv8.so.v8314-3.14.5
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: OpenShift Container Platform
Classification: Red Hat
Component: ImageStreams
Version: 2.1.0
Hardware: Unspecified
OS: Unspecified
high
medium
Target Milestone: ---
: ---
Assignee: Jason DeTiberus
QA Contact: libra bugs
URL:
Whiteboard:
Depends On: 1104922
Blocks:
TreeView+ depends on / blocked
 
Reported: 2014-06-09 15:11 UTC by Brenton Leanhardt
Modified: 2018-12-05 18:49 UTC (History)
13 users (show)

Fixed In Version: openshift-origin-cartridge-nodejs-1.24.3.7-1.el6op
Doc Type: Bug Fix
Doc Text:
When the node command was run in Node.js cartridges, users experienced "error while loading shared libraries" messages. This was because the LD_LIBRARY_PATH was missing the V8 path, which was necessary as V8 has become part of Red Hat Software Collections. This bug fix updates the path and, as a result, the errors no longer occur.
Clone Of: 1104922
Environment:
Last Closed: 2014-08-04 13:27:24 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2014:0999 0 normal SHIPPED_LIVE Red Hat OpenShift Enterprise 2.1.4 bug fix and enhancement update 2014-08-04 17:26:43 UTC

Description Brenton Leanhardt 2014-06-09 15:11:16 UTC
+++ This bug was initially created as a clone of Bug #1104922 +++

Description of problem:

[rhfp-syndicateme.rhcloud.com repo]\> node index.js
node: error while loading shared libraries: libv8.so.v8314-3.14.5: cannot open shared object file: No such file or directory


Version-Release number of selected component (if applicable):

Node js 10.0

How reproducible:

happens every time I deploy in my post receive hook. I also get the error when I try to run manually (see above)

Steps to Reproduce:
1.
2.
3.

Actual results:

node: error while loading shared libraries: libv8.so.v8314-3.14.5

Expected results:

see a list of the indexed files

Additional info:

--- Additional comment from Michal Fojtik on 2014-06-05 08:53:44 EDT ---

Rich:

You can try to prefix the 'node' with "scl enable node010 'node'".

Also can you please provide more info, like the output of 'env' command in the script where do you execute 'node' command?

--- Additional comment from Michal Fojtik on 2014-06-05 09:12:52 EDT ---

FYI, this works when I do 'rhc ssh':

[node-mfojtik.rhcloud.com 539069e6e0b8cd999a00011e]\> echo $LD_LIBRARY_PATH
/opt/rh/v8314/root/usr/lib64:/opt/rh/nodejs010/root/usr/lib64
[node-mfojtik.rhcloud.com 539069e6e0b8cd999a00011e]\> node -v
v0.10.25

--- Additional comment from francois roland on 2014-06-05 10:17:47 EDT ---

I'm having the same error anytime I type a 'node' or 'npm' command in the rhc ssh command line tool.

I tried both propositions from Michal, and here are the results I get : 

$ scl enable node010 'node'
Unable to open /etc/scl/prefixes/node010!

$ echo $LD_LIBRARY_PATH
/opt/rh/nodejs010/root/usr/lib64

$ node -v
node: error while loading shared libraries: libv8.so.v8314-3.14.5: cannot open shared object file: No such file or directory

$ env
MANPATH=/opt/rh/nodejs010/root/usr/share/man::
OPENSHIFT_SECRET_TOKEN=[hidden]
OPENSHIFT_GEAR_MEMORY_MB=512
SELINUX_ROLE_REQUESTED=
GEM_HOME=/var/lib/openshift/5389ccff50044672510000c2/.gem
OPENSHIFT_DEPLOYMENT_TYPE=git
TERM=xterm-256color
SHELL=/bin/bash
OPENSHIFT_MONGODB_DB_USERNAME=admin
OPENSHIFT_MONGODB_DB_LOG_DIR=/var/lib/openshift/5389ccff50044672510000c2/app-root/logs/
OPENSHIFT_LOG_DIR=/var/lib/openshift/5389ccff50044672510000c2/app-root/logs/
TMPDIR=/tmp/
SSH_CLIENT=80.215.167.182 16582 22
OPENSHIFT_NODEJS_PATH_ELEMENT=/var/lib/openshift/5389ccff50044672510000c2//.node_modules/.bin:/opt/rh/nodejs010/root/usr/bin
OPENSHIFT_DEPLOYMENTS_DIR=/var/lib/openshift/5389ccff50044672510000c2/app-deployments/
OPENSHIFT_TMP_DIR=/tmp/
SELINUX_USE_CURRENT_RANGE=
OPENSHIFT_REPO_DIR=/var/lib/openshift/5389ccff50044672510000c2/app-root/runtime/repo/
OPENSHIFT_HOMEDIR=/var/lib/openshift/5389ccff50044672510000c2/
OPENSHIFT_MONGODB_DB_PASSWORD=5bzWYi14kJbw
OPENSHIFT_GEAR_NAME=devconitv
OPENSHIFT_NODEJS_PORT=8080
OPENSHIFT_PYPI_MIRROR_URL=http://mirror1.ops.rhcloud.com/mirror/python/web/simple
SSH_TTY=/dev/pts/1
OPENSHIFT_NODEJS_LD_LIBRARY_PATH_ELEMENT=/opt/rh/nodejs010/root/usr/lib64
OPENSHIFT_NODEJS_IDENT=redhat:nodejs:0.10:0.0.18
OPENSHIFT_APP_SSH_PUBLIC_KEY=[path to key]
OPENSHIFT_CLOUD_DOMAIN=rhcloud.com
USER=5389ccff50044672510000c2
LD_LIBRARY_PATH=/opt/rh/nodejs010/root/usr/lib64
TMP_DIR=/tmp/
TMOUT=300
OPENSHIFT_BUILD_DEPENDENCIES_DIR=/var/lib/openshift/5389ccff50044672510000c2/app-root/runtime/build-dependencies/
OPENSHIFT_MONGODB_IDENT=redhat:mongodb:2.4:0.2.11
MAIL=/var/mail/5389ccff50044672510000c2
PATH=/var/lib/openshift/5389ccff50044672510000c2//.node_modules/.bin:/opt/rh/nodejs010/root/usr/bin:/bin:/usr/bin:/usr/sbin
PWD=/var/lib/openshift/5389ccff50044672510000c2
OPENSHIFT_NODEJS_LOG_DIR=/var/lib/openshift/5389ccff50044672510000c2/app-root/logs/
OPENSHIFT_MONGODB_DB_HOST=127.7.108.130
OPENSHIFT_APP_DNS=devconitv-conitv.rhcloud.com
LANG=fr_FR.UTF-8
OPENSHIFT_PRIMARY_CARTRIDGE_DIR=/var/lib/openshift/5389ccff50044672510000c2/nodejs/
OPENSHIFT_NODEJS_IP=127.7.108.129
OPENSHIFT_GEAR_DNS=devconitv-conitv.rhcloud.com
PS1=[devconitv-conitv.rhcloud.com \W]\> 
OPENSHIFT_CARTRIDGE_SDK_BASH=/usr/lib/openshift/cartridge_sdk/bash/sdk
SELINUX_LEVEL_REQUESTED=
OPENSHIFT_APP_SSH_KEY=[path to key]
SHLVL=1
OPENSHIFT_DEPLOYMENT_BRANCH=master
HOME=/var/lib/openshift/5389ccff50044672510000c2/
OPENSHIFT_MONGODB_DB_URL=mongodb://admin:[password]@127.7.108.130:27017/
OPENSHIFT_MONGODB_DB_PORT=27017
OPENSHIFT_NODEJS_PID_DIR=/var/lib/openshift/5389ccff50044672510000c2/nodejs//run/
OPENSHIFT_DEPENDENCIES_DIR=/var/lib/openshift/5389ccff50044672510000c2/app-root/runtime/dependencies/
OPENSHIFT_KEEP_DEPLOYMENTS=1
OPENSHIFT_APP_NAME=devconitv
OPENSHIFT_DATA_DIR=/var/lib/openshift/5389ccff50044672510000c2/app-root/data/
TMP=/tmp/
LOGNAME=5389ccff50044672510000c2
OPENSHIFT_NAMESPACE=conitv
OPENSHIFT_AUTO_DEPLOY=true
OPENSHIFT_GEAR_UUID=5389ccff50044672510000c2
OPENSHIFT_BROKER_HOST=openshift.redhat.com
SSH_CONNECTION=80.215.167.182 16582 10.82.241.44 22
OPENSHIFT_APP_UUID=5389ccff50044672510000c2
OPENSHIFT_NODEJS_VERSION=0.10
OPENSHIFT_UMASK=077
OPENSHIFT_NODEJS_DIR=/var/lib/openshift/5389ccff50044672510000c2/nodejs/
HISTFILE=/var/lib/openshift/5389ccff50044672510000c2/app-root/data/.bash_history
OPENSHIFT_CARTRIDGE_SDK_RUBY=/usr/lib/openshift/cartridge_sdk/ruby/sdk.rb
OPENSHIFT_MONGODB_DIR=/var/lib/openshift/5389ccff50044672510000c2/mongodb/
_=/bin/env
OLDPWD=/var/lib/openshift/5389ccff50044672510000c2/

I can see the libv8.so.v8314-3.14.5 in the /opt/rh/v8314/root/usr/lib64 folder, so I tried to change the LD_LIBRARY_PATH using rhc set-env, but it doesn't work (rhc set-env says 'done', but using echo $LD_LIBRARY_PATH in ssh still prints the old value)

The app is still running but I need node command line to work for some bash scripts and cron jobs

--- Additional comment from francois roland on 2014-06-05 10:46:12 EDT ---

Some more info...

when doing 
$rhc set-env LD_LIBRARY_PATH=/opt/rh/v8314/root/usr/lib64:/opt/rh/nodejs010/root/usr/lib64 -a appname

it adds a file to the ~/.env/user_vars/ folder with the declared value, but it doesn't change the $LD_LIBRARY_PATH variable unfortunately

I noticed there's no mention of the v8314 lib in the /etc/ld.so.conf.d folder, but I can't change it since I don't have root access. 

I've also been looking for a place like ~./bashrc to add a line like
export LD_LIBRARY_PATH=/opt/rh/v8314/root/usr/lib64:/opt/rh/nodejs010/root/usr/lib64 
but haven't find anything

--- Additional comment from francois roland on 2014-06-05 11:26:46 EDT ---

update : 

don't know if you guys changed anything but LD_LIBRARY_PATH is now /opt/rh/v8314/root/usr/lib64:/opt/rh/nodejs010/root/usr/lib64 and node command is working again

I also ran 
$ scl enable nodejs010 v8314 'node'

but I'm not sure what fixed things up

--- Additional comment from Michal Fojtik on 2014-06-05 12:07:35 EDT ---

Francois, we haven't touched anything AFAIK ;-) Have you tried to stop/start?

Yeah, if you have custom script that runs 'node' command, that it is good idea to use 'scl enable' wrapper to assure it will get proper env vars, independent on the OpenShift LD_LIBRARY_PATH.

--- Additional comment from francois roland on 2014-06-05 12:16:20 EDT ---

Michal, 

No, I didn't stop/start the app before noticing things were back to normal.

So it seems the scl line did the trick. I just checked scl --help to get the correct name for node (was nodejs010 and not node010 as you said earlier)

what do you mean by 'scl enable' wrapper ? Do I have to include this line anytime I need to run a node script ?

I started using the services a few days ago and never had this issue before. Is there a way to 'fix' things permanently ?

--- Additional comment from Michal Fojtik on 2014-06-05 12:22:07 EDT ---

Francois: Yes, this should work without any 'scl enable', I will fix this tomorrow morning but it will not go into production immediately. In meanwhile, using the 'scl enable' is a 'good' workaround as it make sure everything (LD_LIBRARY_PATH/PATH) is set correctly.

--- Additional comment from francois roland on 2014-06-05 12:23:20 EDT ---

Alright, 

thank you very much Michal :)

--- Additional comment from Michal Fojtik on 2014-06-06 05:53:47 EDT ---

https://github.com/openshift/origin-server/pull/5480

--- Additional comment from openshift-github-bot on 2014-06-06 06:29:42 EDT ---

Commit pushed to master at https://github.com/openshift/origin-server

https://github.com/openshift/origin-server/commit/e6c3518635e8916cd88dc25a7a237c65b74465a8
Bug 1104922 - Add v8314 collection list of enabled SCL for nodejs cart

--- Additional comment from Rich Hildred on 2014-06-06 23:25:51 EDT ---

still not working for me env:

MANPATH=/opt/rh/nodejs010/root/usr/share/man:
OPENSHIFT_SECRET_TOKEN=fhHntICnYoeXK-WGrA9wLKofh-7u7W2iBQc9AqJFAI2ECMeVxZW0ZjhBKT8hFb2wRvE4KS7tYUCRrkbgC9CmOogFCUHHE1f6yswtUcoh8wRwuqLNoTSmxrgQm1A1KIV5
OPENSHIFT_GEAR_MEMORY_MB=512
SELINUX_ROLE_REQUESTED=
GEM_HOME=/var/lib/openshift/52544d70e0b8cd9fba00000e/.gem
TERM=xterm-256color
SHELL=/bin/bash
OPENSHIFT_LOG_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/app-root/logs/
TMPDIR=/tmp/
SSH_CLIENT=174.88.149.75 57851 22
OPENSHIFT_NODEJS_PATH_ELEMENT=/var/lib/openshift/52544d70e0b8cd9fba00000e//.node_modules/.bin:/opt/rh/nodejs010/root/usr/bin
OPENSHIFT_DEPLOYMENTS_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/app-deployments/
OPENSHIFT_TMP_DIR=/tmp/
SELINUX_USE_CURRENT_RANGE=
OPENSHIFT_REPO_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/app-root/runtime/repo/
OPENSHIFT_HOMEDIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/
OPENSHIFT_GEAR_NAME=rhfp
OPENSHIFT_NODEJS_PORT=8080
OPENSHIFT_GEAR_NAME=rhfp
OPENSHIFT_NODEJS_PORT=8080
OPENSHIFT_PYPI_MIRROR_URL=http://mirror1.ops.rhcloud.com/mirror/python/web/simple
SSH_TTY=/dev/pts/0
OPENSHIFT_NODEJS_LD_LIBRARY_PATH_ELEMENT=/opt/rh/nodejs010/root/usr/lib64
OPENSHIFT_NODEJS_IDENT=redhat:nodejs:0.10:0.0.18
OPENSHIFT_APP_SSH_PUBLIC_KEY=/var/lib/openshift/52544d70e0b8cd9fba00000e/.openshift_ssh/id_rsa.pub
OPENSHIFT_CLOUD_DOMAIN=rhcloud.com
USER=52544d70e0b8cd9fba00000e
LD_LIBRARY_PATH=/opt/rh/nodejs010/root/usr/lib64
TMP_DIR=/tmp/
TMOUT=300
OPENSHIFT_BUILD_DEPENDENCIES_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/app-root/runtime/build-dependencies/
MAIL=/var/mail/52544d70e0b8cd9fba00000e
PATH=/var/lib/openshift/52544d70e0b8cd9fba00000e//.node_modules/.bin:/opt/rh/nodejs010/root/usr/bin:/bin:/usr/bin:/usr/sbin
PWD=/var/lib/openshift/52544d70e0b8cd9fba00000e/app-root/runtime/repo
OPENSHIFT_NODEJS_LOG_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/app-root/logs/
OPENSHIFT_APP_DNS=rhfp-syndicateme.rhcloud.com
OPENSHIFT_NODEJS_LOG_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/app-root/logs/
OPENSHIFT_APP_DNS=rhfp-syndicateme.rhcloud.com
LANG=en_CA.UTF-8
OPENSHIFT_PRIMARY_CARTRIDGE_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/nodejs/
OPENSHIFT_GEAR_DNS=rhfp-syndicateme.rhcloud.com
OPENSHIFT_NODEJS_IP=127.13.15.129
PS1=[rhfp-syndicateme.rhcloud.com \W]\>
OPENSHIFT_CARTRIDGE_SDK_BASH=/usr/lib/openshift/cartridge_sdk/bash/sdk
SELINUX_LEVEL_REQUESTED=
OPENSHIFT_APP_SSH_KEY=/var/lib/openshift/52544d70e0b8cd9fba00000e/.openshift_ssh/id_rsa
SHLVL=1
HOME=/var/lib/openshift/52544d70e0b8cd9fba00000e/
OPENSHIFT_NODEJS_PID_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/nodejs//run/
OPENSHIFT_DEPENDENCIES_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/app-root/runtime/dependencies/
OPENSHIFT_APP_NAME=rhfp
OPENSHIFT_DATA_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/app-root/data/
TMP=/tmp/
LOGNAME=52544d70e0b8cd9fba00000e
OPENSHIFT_GEAR_UUID=52544d70e0b8cd9fba00000e
OPENSHIFT_NAMESPACE=syndicateme
OPENSHIFT_BROKER_HOST=openshift.redhat.com
SSH_CONNECTION=174.88.149.75 57851 10.108.9.149 22
OPENSHIFT_APP_UUID=52544d70e0b8cd9fba00000e
OPENSHIFT_NODEJS_VERSION=0.10
OPENSHIFT_UMASK=077
OPENSHIFT_NODEJS_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/nodejs/
HISTFILE=/var/lib/openshift/52544d70e0b8cd9fba00000e/app-root/data/.bash_history
OPENSHIFT_CARTRIDGE_SDK_RUBY=/usr/lib/openshift/cartridge_sdk/ruby/sdk.rb
_=/bin/env
OLDPWD=/var/lib/openshift/52544d70e0b8cd9fba00000e

when I try to do  the scl thing:

[rhfp-syndicateme.rhcloud.com repo]\> scl enable node010 'node' node index.js
Unable to open /etc/scl/prefixes/node010!

this has worked properly for months, and just stopped working on the 4th.

--- Additional comment from Rich Hildred on 2014-06-06 23:32:37 EDT ---

ok ... I got it to work

I did:

scl enable nodejs010 'node'

then at the node prompt

require('./index.js');

--- Additional comment from Yan Du on 2014-06-09 04:32:58 EDT ---

Test on devenv_4850, issue can't be reproduced.

[n10a-111.dev.rhcloud.com repo]\>  echo $LD_LIBRARY_PATH
/opt/rh/v8314/root/usr/lib64
[n10a-111.dev.rhcloud.com repo]\> node -v
v0.6.20

Move bug to verified.

--- Additional comment from Michal Fojtik on 2014-06-09 08:29:25 EDT ---

Rich: The problem is that LD_LIBRARY_PATH=/opt/rh/nodejs010/root/usr/lib64 is missing the V8 path as the V8 became part of Software Collection... My patch should correct this, but it is not in production yet.

Comment 2 Alan Gruskoff 2014-06-23 23:43:01 UTC
June 23
In starting to use OpenShift via SSH, I find node errors out, such as with a simple version request:

> echo $LD_LIBRARY_PATH
/opt/rh/nodejs010/root/usr/lib64
> node -v
node: error while loading shared libraries: libv8.so.v8314-3.14.5: cannot open shared object file: No such file or directory

Comment 3 Jason DeTiberus 2014-07-15 15:02:27 UTC
https://github.com/openshift/enterprise-server/pull/327

Comment 6 Ma xiaoqiang 2014-07-16 05:02:56 UTC
Check on puddle [2.1.4/2014-07.15.1]

1.Create a nodejs app
#rhc app create nodejs nodejs
2.log in the app, check the env
>env|grep LIB
OPENSHIFT_NODEJS_LD_LIBRARY_PATH_ELEMENT=/opt/rh/v8314/root/usr/lib64
LD_LIBRARY_PATH=/opt/rh/v8314/root/usr/lib64
3.run the command 'which node'
> which node
which: no node in (/var/lib/openshift/53c5dff808c291a77000005e//.node_modules/.bin::/bin:/usr/bin:/usr/sbin)


The LIB path doesn't contain the nodejs path.

Comment 7 Johnny Liu 2014-07-16 06:56:09 UTC
Seem like OSE does not include node bin path in ENV.

[nodejsapp-jialiu.ose-21.com.cn 53c60eb3be739b17ff000001]\> scl enable nodejs010 'echo $LD_LIBRARY_PATH'
/opt/rh/v8314/root/usr/lib64:/opt/rh/nodejs010/root/usr/lib64:/opt/rh/v8314/root/usr/lib64
[nodejsapp-jialiu.ose-21.com.cn 53c60eb3be739b17ff000001]\> echo $LD_LIBRARY_PATH
/opt/rh/v8314/root/usr/lib64


[nodejsapp-jialiu.ose-21.com.cn 53c60eb3be739b17ff000001]\> scl enable nodejs010 'echo $PATH'
/opt/rh/v8314/root/usr/bin:/opt/rh/nodejs010/root/usr/bin:/var/lib/openshift/53c60eb3be739b17ff000001//.node_modules/.bin::/bin:/usr/bin:/usr/sbin
[nodejsapp-jialiu.ose-21.com.cn 53c60eb3be739b17ff000001]\> echo $PATH
/var/lib/openshift/53c60eb3be739b17ff000001//.node_modules/.bin::/bin:/usr/bin:/usr/sbin
[nodejsapp-jialiu.ose-21.com.cn 53c60eb3be739b17ff000001]\> scl enable nodejs010 v8314 'which node'
/opt/rh/nodejs010/root/usr/bin/node

The path for node bin should included in $PATH.

Comment 8 Jason DeTiberus 2014-07-23 15:39:29 UTC
I missed some later cherry-picks for the upstream bug.  I've verified this in a devenv and $PATH and $LD_LIBRARY_PATH are now properly set.

https://github.com/openshift/enterprise-server/pull/338

Comment 9 Gaoyun Pei 2014-07-24 05:52:36 UTC
Verify this bug with openshift-origin-cartridge-nodejs-1.24.3.7-1.el6op.noarch

Create a nodejs application, ssh into this app:
[apptest-11.ose21z-auto.com.cn 53d082a708c2917794000001]\> node
> 
(^C again to quit)
> [apptest-11.ose21z-auto.com.cn 53d082a708c2917794000001]\> node -v
v0.10.25
[apptest-11.ose21z-auto.com.cn 53d082a708c2917794000001]\> env|grep PATH
MANPATH=/opt/rh/nodejs010/root/usr/share/man:/opt/rh/v8314/root/usr/share/man::
OPENSHIFT_NODEJS_PATH_ELEMENT=/var/lib/openshift/53d082a708c2917794000001//.node_modules/.bin:/opt/rh/nodejs010/root/usr/bin
OPENSHIFT_NODEJS_LD_LIBRARY_PATH_ELEMENT=/opt/rh/nodejs010/root/usr/lib64:/opt/rh/v8314/root/usr/lib64
LD_LIBRARY_PATH=/opt/rh/nodejs010/root/usr/lib64:/opt/rh/v8314/root/usr/lib64
PATH=/var/lib/openshift/53d082a708c2917794000001//.node_modules/.bin:/opt/rh/nodejs010/root/usr/bin:/bin:/usr/bin:/usr/sbin

Comment 11 errata-xmlrpc 2014-08-04 13:27:24 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHBA-2014-0999.html


Note You need to log in before you can comment on or make changes to this bug.