sharp: v0.31.2: macOS x64 prebuilt binaries fail on macOS < 11 with "Symbol not found: _pthread_jit_write_protect_supported_np"

Possible install-time or require-time problem

  • I have read the documentation relating to installation.
  • I have ensured that the architecture and platform of Node.js used for npm install is the same as the architecture and platform of Node.js used at runtime.

Are you using the latest version of sharp?

  • I am using the latest version of sharp as reported by npm view sharp dist-tags.latest.

If you cannot confirm this, please upgrade to the latest version and try again before opening an issue.

If you are using another package which depends on a version of sharp that is not the latest, please open an issue against that package instead.


Hello! After updating Sharp from version 0.31.1 to version 0.31.2, some of my users can no longer run my application.

Dyld Error Message:
  Symbol not found: _pthread_jit_write_protect_supported_np
  Referenced from: /Applications/electron.app/Contents/Resources/app.asar.unpacked/node_modules/sharp/build/Release/../.././vendor/8.13.3/darwin-x64/lib/libvips-cpp.42.dylib
  Expected in: /usr/lib/libSystem.B.dylib

I can guess that this problem is probably inside libvips (as shown in the error message), but in the installation guide you state:

Prebuilt binaries

Ready-compiled sharp and libvips binaries are provided for use on the most common platforms:

 - macOS x64 (>= 10.13)
 - macOS ARM64
 - Linux x64 (glibc >= 2.17, musl >= 1.1.24, CPU with SSE4.2)
 - Linux ARM64 (glibc >= 2.17, musl >= 1.1.24)
 - Windows x64
 - Windows x86

So I’m just wondering if this bug should be expected to be fixed or should the supported macOS version be higher?

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 1
  • Comments: 23 (10 by maintainers)

Commits related to this issue

Most upvoted comments

Hi @lovell, thanks for the advise, will try to give it a go by tonight.

Well, as it turned out I don’t have to wait till tonight, I have access to my local machine again. Here are the steps for everyone else that came here from a Google Search, and I noticed that it’s a MacOSX specific issue. I’m on node v16.17.1, running on MacOS Mojave 10.14.6.

  • npm uninstall sharp and
  • npm install sharp@0.31.1

And, they’re back again working as intended.

Thanks,

Also happend on MacOS 10.15.7

dyld: lazy symbol binding failed: Symbol not found: _pthread_jit_write_protect_supported_np
  Referenced from: /Users/bob/Documents/workspace/git.nie/art-design-node/node_modules/sharp/build/Release/../.././vendor/8.13.3/darwin-x64/lib/libvips-cpp.42.dylib
  Expected in: /usr/lib/libSystem.B.dylib

dyld: Symbol not found: _pthread_jit_write_protect_supported_np
  Referenced from: /Users/bob/Documents/workspace/git.nie/art-design-node/node_modules/sharp/build/Release/../.././vendor/8.13.3/darwin-x64/lib/libvips-cpp.42.dylib
  Expected in: /usr/lib/libSystem.B.dylib

v0.32.0 now available with prebuilt binaries that contains a patched orc for macOS 10.13+ support.

For macOS 10 support you’ll currently need to temporarily pin sharp to v0.31.1 or earlier.

macOS 10 reached end-of-life in September this year, hence CI providers removing support for it, hence the unfortunate situation where we weren’t able to test using it.

Hopefully the fixes and checks now put in place will allow sharp to re-introduce support for the documented macOS 10.13+ from the next release onwards, which is well beyond Apple’s official support, and should allow those using e.g. older hardware to continue to benefit from it.

The next release of the prebuilt binaries will include the upstream patch added to orc a couple of weeks ago (via commit https://github.com/lovell/sharp-libvips/commit/d3adcca3cb4c8cb9024ae263e2fe8d01c251eb6d ) that provides both compile and runtime checks, which is much more comprehensive than our original quick fix. These will be made available as part of sharp v0.32.0.

l literally just scrapped my whole computer HD and started with a fresh install of Ventura from mojave… took me a solid 2 days to get everything in order.

Now sharp supports… LOL. Anyways I guess it was for the best

FYI: Make sure there is only one sharp package inside <your-project-dir>/node_modules/**/. Add

"resolutions": {
  "sharp": "0.31.1"
}

when needed.

thanks @neonexus. i wasn’t sure v31.1 was an option in my case because of #3384, but pinning electron to v19 works for now. cheers 😃

Upstream issue: https://gitlab.freedesktop.org/gstreamer/orc/-/issues/44 (I deliberately didn’t open a PR there because I don’t have access to iOS devices).