syncthing-macos: macOS 1.11 error symbol not found: _clock_gettime with syncthing 1.14.0
I’m using syncthing-macos 1.6.1-1 on Mac OS X (El Capitan, 10.11.6). Today, Syncthing updated itself to version 1.14.0. Now the syncthing binary crashes on startup:
dyld: lazy symbol binding failed: Symbol not found: _clock_gettime
Referenced from: /Users/schuetzm/Library/Application Support/Syncthing-macOS/./syncthing
Expected in: /usr/lib/libSystem.B.dylib
dyld: Symbol not found: _clock_gettime
Referenced from: /Users/schuetzm/Library/Application Support/Syncthing-macOS/./syncthing
Expected in: /usr/lib/libSystem.B.dylib
It seems this is caused by building syncthing on a newer MacOS and not setting MACOSX_DEPLOYMENT_TARGET
. See https://bugs.erlang.org/browse/ERL-256 for details.
So… is this even the right place to submit the bug? I.e., are you building your own syncthing binaries, or should I report it upstream?
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Comments: 16 (7 by maintainers)
Commits related to this issue
- Update README.md Add macOS version support for releases (see #148) — committed to syncthing/syncthing-macos by xor-gate 3 years ago
Apple has this frustratingly draconian attitude that perfectly good-working Macintosh hardware is to be declared as vintage/obsolete/legacy. Why do you suppose I’m still running macOS El Capitan 10.11.x? Because Apple won’t let me update to the most recent OS.
Now Syncthing has fallen in with this damnable attitude? We follow where Go treads? Just a moment. This is an open source project. We’re better than Apple and Google.
It’s my expectation that Syncthing continues to self-update and work properly. Otherwise it should do a quick check and disable automatic updating. The current behavior to brick itself isn’t cool.
Ironically I could pave the Macintosh boot device with Linux and keep running the current version of Syncthing. Oh, wait.
BTW I downloaded the most recently available v1.13.x macOS binary from archive.org. The Syncthing downloads page only reveals the most current build, which breaks due to the missing symbol.
The road-map is whatever go does, which is documented here: https://tip.golang.org/doc/go1.15#darwin
Go releases happen once every 6 months: https://github.com/golang/go/wiki/Go-Release-Cycle
Interoperability: Any instance running a v1 version is intended to be able to sync with any other running v1. That doesn’t mean that there won’t be problems. Plus new Syncthing versions aren’t just for show, they have bugfixes and improvements -> do upgrade.
tl;dr: Time to upgrade your OS.
I’m experiencing this problem too. It’s an old Mac server that can not be upgraded past 10.11.6. Is there a way to forcibly run an older build of Syncthing on machines that can’t be upgraded? Even if that only buys some time to decommission the old machine?
If you really feel like you want to open a discussion on supporting old infrastructures of a particular platform, do that on https://forum.syncthing.net (though I personally prefer you wouldn’t, my statement will be brief). The issue tracker is for tracking actionable issues, not wide-ranging discussions.
You could manually install the bundle v1.12.1-1 which has the
STNOUPGRADE=1
set by default. Since v1.13.0 syncthing is build with golang 1.16 due to introduction of Apple M1 silicon CPU.