-
Notifications
You must be signed in to change notification settings - Fork 697
Open
Description
System information
- node version: 18.15.0
- npm or yarn version: yarn 1.22.19
- OS/version/architecture: Linux a2a48d191f5f 5.15.49-linuxkit Comment all code methods #1 SMP PREEMPT Tue Sep 13 07:51:32 UTC 2022 x86_64 GNU/Linux
- Applicable nodegit version: 0.27.0
The issue
I built with following command:
apt-get install -y libgit2-27 libgit2-dev libkrb5-dev build-essential python2
alias python=python2
yarn --frozen-lockfileit builds fine, but when I try to run my project, as soon as it requires nodegit:
node: symbol lookup error: /usr/share/apps/node_modules/nodegit/build/Release/nodegit.node: undefined symbol: gcry_control
On my runtime I have following packages installed:
apt-get install -y git libgit2-27 libkrb5-dev libssl1.1 libgcrypt20
When I inspect the built file with ldd node_modules/nodegit/build/Release/nodegit.node it says this:
libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x0000004001cfc000)
libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x0000004001d4b000)
libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x0000004001e2b000)
libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x0000004001e5f000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x0000004001e65000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x0000004001fe9000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x000000400216c000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x0000004002188000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00000040021a9000)
libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x0000004002369000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x0000004002378000)
libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x000000400237d000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x0000004002384000)
/lib64/ld-linux-x86-64.so.2 (0x0000004000000000)
The workaround
I fixed it by running my process with LD_PRELOAD="/lib/x86_64-linux-gnu/libgcrypt.so.20" node build/server.js
The root-cause and additional questions
- Shouldn't the lib be included right at build time? It's very bad to discover a crash at runtime and not at build time 😓
- Is it possible I'll have other similar surprises at runtime, or the fact that it properly imports nodegit is enough to be reassured about this?
Metadata
Metadata
Assignees
Labels
No labels