Open MayamaTakeshi opened 3 weeks ago
Obs: the 'Error reading CA certificates from buffer' always happens even when there is no segfault and the test succeeds. (it might be related though).
In the Debian 11 VM I built sip-lab from source using v16.20.2 and with this tls.js didn't segfault. Then i switched to node v21.6.1 and then tls.js segfaulted. So i tried to rebuild the addon with v21.6.1 but got:
$ npm run rebuild
... ABRIDGED ...
In file included from /root/tmp/MayamaTakeshi/sip-lab/node_modules/node-addon-api/napi.h:3112,
from ../src/addon.cpp:4:
/root/tmp/MayamaTakeshi/sip-lab/node_modules/node-addon-api/napi-inl.h: In instantiation of ‘napi_status Napi::details::AttachData(napi_env, napi_value, FreeType*, napi_finalize, void*) [with FreeType = Napi::details::CallbackData<Napi::Value (*)(const Napi::CallbackInfo&), Napi::Value>; napi_env = napi_env__*; napi_value = napi_value__*; napi_finalize = void (*)(napi_env__*, void*, void*)]’:
/root/tmp/MayamaTakeshi/sip-lab/node_modules/node-addon-api/napi-inl.h:2188:39: required from ‘napi_status Napi::CreateFunction(napi_env, const char*, napi_callback, CbData*, napi_value__**) [with CbData = Napi::details::CallbackData<Napi::Value (*)(const Napi::CallbackInfo&), Napi::Value>; napi_env = napi_env__*; napi_callback = napi_value__* (*)(napi_env__*, napi_callback_info__*); napi_value = napi_value__*; napi_callback_info = napi_callback_info__*]’
/root/tmp/MayamaTakeshi/sip-lab/node_modules/node-addon-api/napi-inl.h:2245:21: required from ‘static Napi::Function Napi::Function::New(napi_env, Callable, const char*, void*) [with Callable = Napi::Value (*)(const Napi::CallbackInfo&); napi_env = napi_env__*]’
../src/addon.cpp:1382:54: required from here
/root/tmp/MayamaTakeshi/sip-lab/node_modules/node-addon-api/napi-inl.h:62:47: error: invalid conversion from ‘napi_finalize’ {aka ‘void (*)(napi_env__*, void*, void*)’} to ‘node_api_nogc_finalize’ {aka ‘void (*)(const napi_env__*, void*, void*)’} [-fpermissive]
62 | status = napi_add_finalizer(env, obj, data, finalizer, hint, nullptr);
| ^~~~~~~~~
| |
| napi_finalize {aka void (*)(napi_env__*, void*, void*)}
In file included from /root/.cache/node-gyp/21.6.1/include/node/node_api.h:12,
from /root/tmp/MayamaTakeshi/sip-lab/node_modules/node-addon-api/napi.h:4,
from ../src/addon.cpp:4:
/root/.cache/node-gyp/21.6.1/include/node/js_native_api.h:516:43: note: initializing argument 4 of ‘napi_status napi_add_finalizer(napi_env, napi_value, void*, node_api_nogc_finalize, void*, napi_ref__**)’
516 | node_api_nogc_finalize finalize_cb,
| ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
make: *** [addon.target.mk:185: Release/obj.target/addon/src/addon.o] Error 1
make: Leaving directory '/root/tmp/MayamaTakeshi/sip-lab/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/root/tmp/MayamaTakeshi/sip-lab/node_modules/node-gyp/lib/build.js:203:23)
gyp ERR! stack at ChildProcess.emit (node:events:519:28)
gyp ERR! stack at ChildProcess._handle.onexit (node:internal/child_process:294:12)
gyp ERR! System Linux 5.10.0-27-amd64
gyp ERR! command "/root/.nvm/versions/node/v21.6.1/bin/node" "/root/tmp/MayamaTakeshi/sip-lab/node_modules/.bin/node-gyp" "rebuild"
gyp ERR! cwd /root/tmp/MayamaTakeshi/sip-lab
gyp ERR! node -v v21.6.1
gyp ERR! node-gyp -v v9.3.0
gyp ERR! not ok
And indeed, if I do 'npm i sip-lab' and use node v16, there is no problem.
So prebuildify is not working (not generating addon for different node versions)
The problem is explained in prebuild/prebuildify/issues 90. For now we will stay with prebuildify@5.0.1. Doing:
nvm use v16.13.1
npx prebuildify-cross -i mayamatakeshi/sip-lab-debian11:latest -t 15.0.0 -t 16.0.0 -t 17.0.0 -t 18.0.0 -t 19.0.0 -t 20.0.0 -t 21.0.0 --strip
we got:
takeshi@takeshi-desktop:sip-lab$ tree prebuilds
prebuilds
└── linux-x64
├── node.abi102.node
├── node.abi108.node
├── node.abi111.node
├── node.abi115.node
├── node.abi120.node
├── node.abi88.node
└── node.abi93.node
However, after installing sip-lab@1.28.10, on vm 225.11, I got:
It doesn't happen with my ubuntu desktop 22.04. But on Debian 11 container or VM i get (100% reproducible):
So there might be some race condition and a mutex lock missing somewhere.
Node version: v21.2.0