web-ext
web-ext copied to clipboard
web-ext commands fail on dynamic linking (OS X) (node-dtrace-provider, bunyan)
Is this a feature request or a bug?
This is a bug, probably caused by a third-party plugin.
What is the current behavior?
I installed web-ext via npm (Node version: v11.4.0) on OS X 10.14.1 today, using npm install -g web-ext. Every invocation I’ve used as of yet aborts with the following message:
dyld: lazy symbol binding failed: Symbol not found: _usdt_create_provider
Referenced from: /usr/local/lib/node_modules/web-ext/node_modules/dtrace-provider/src/build/Release/DTraceProviderBindings.node
Expected in: flat namespace
dyld: Symbol not found: _usdt_create_provider
Referenced from: /usr/local/lib/node_modules/web-ext/node_modules/dtrace-provider/src/build/Release/DTraceProviderBindings.node
Expected in: flat namespace
zsh: abort web-ext
This is apparently caused by a problem in the node-dtrace-provider package (see chrisa/node-dtrace-provider#118), which has been open since May and received no activity from the author (who also hasn’t commited to master since then). It thus does not seem as if this issue will get fixed anytime soon, which means that a fallback/workaround might be necessary?
What is the expected or desired behavior?
I expect the commands to run without dynamic linking errors.
Version information (for bug reports)
- Firefox version: 63.0.3
- Your OS and version: OS X 10.14.1
- Paste the output of these commands:
$ node --version && npm --version && web-ext --version
v11.4.0
6.5.0
dyld: lazy symbol binding failed: Symbol not found: _usdt_create_provider
Referenced from: /usr/local/lib/node_modules/web-ext/node_modules/dtrace-provider/src/build/Release/DTraceProviderBindings.node
Expected in: flat namespace
dyld: Symbol not found: _usdt_create_provider
Referenced from: /usr/local/lib/node_modules/web-ext/node_modules/dtrace-provider/src/build/Release/DTraceProviderBindings.node
Expected in: flat namespace
zsh: abort web-ext --version
Thanks for the bug report and sorry you had trouble installing web-ext. This looks bad. Various dtrace errors have plagued us in the past but they've always been non-fatal warnings, unlike now. The dtrace bindings are for an obscure feature of our bunyan logger and web-ext does not use the dtrace features.
We should consider ditching bunyan for pino which will not have this problem, as far as I know. The two are compatible so this should be a straight forward change to make.
Here's an example of migrating from bunyan to pino https://github.com/mozilla/addons-frontend/pull/5826/files
@hellerve Do you have binutils installed via Homebrew? I was encountering the same problem as you (https://stackoverflow.com/questions/54014971/macos-dyld-symbol-not-found-usdt-create-provider) and managed to fix it by removing this package.
I haven’t revisited this problem since filing this report, but uninstalling binutils really do seems to help. It also seems like unisntalling and reinstalling works, but I’m not sure whether the order matters here and that setup is probably pretty brittle.
Thanks for finding this workaround, @andrewgould!
I just encountered this with binutils version 2.34 installed with homebrew. brew remove binutils then rebuilding native packages fixed the problem for me as well.
I'm running OSX Mojave