[Pkg-javascript-devel] Bug#904274: nodejs: Debian nodejs is not ABI-compatible with upstream nodejs
Elana Hashman
ehashman at debian.org
Sun Jul 22 16:37:24 BST 2018
Package: nodejs
Version: 8.10.0~dfsg-2
Severity: important
This bug was initially reported downstream against Ubuntu in
https://bugs.launchpad.net/ubuntu/+source/nodejs/+bug/1779863 by the
upstream GRPC maintainer.
Summary of the issue: upstream nodejs vendors its openssl dependency and
exports the openssl symbols as part of its ABI for native extensions.
Node 8.x depends on openssl 1.0.2. However, Node 8.x in Debian depends
on the default openssl, version 1.1.0. As a result, the Debian nodejs
package provides an incompatible ABI for compiled native node
extensions, resulting in subtle and confusing bugs for end users.
Note that Ubuntu is using an unpatched upstream Debian package in
Bionic/18.04. Hence, this bug really affects the Debian build, not just
Ubuntu. IMO we should not diverge from the ABI contract that upstream
provides. Typical nodejs development practices involve downloading
dependencies with npm, which may include precompiled native dependencies
that rely on a stable node ABI. It is very confusing for end users to
install a system nodejs, download these deps as normal, and then
encounter subtle incompatibilities with scary error messages, like this:
node: symbol lookup error:
/home/pixel/node-openssl-addon-example/build/Release/openssl_example.node:
undefined symbol: SSL_library_init
This seriously impacts the user experience for nodejs users. And I'm
worried that because this is an openssl 1.0.x issue, this problem is
even uglier. I imagine nodejs vendored upstream openssl, which lacks
symbol versions altogether (which could potentially mitigate the issue a
little bit, for systems that have both openssl version .so's installed).
Ubuntu Bionic will need to patch their builddeps downstream to use the
right version of openssl, and I'm going to comment on their bug along
those lines. This is also an option for us in Debian, but given that we
want to drop openssl 1.0.2 in buster, I'd suggest we could also fix this
bug by upgrading node to 10.x, available in experimental, which depends
on openssl 1.1.0 upstream.
- e
More information about the Pkg-javascript-devel
mailing list