couchdb icon indicating copy to clipboard operation
couchdb copied to clipboard

CouchDb 3.5.0 Download broken for Mac (x86_64)

Open StephanU opened this issue 6 months ago • 6 comments

Description

It seems the CouchDB 3.5.0 binary for Mac (x86_64) is broken. When downloading the binary via 'https://couchdb.neighbourhood.ie/downloads/3.5.0/mac/x86_64/Apache-CouchDB.zip', the downloaded binary shows the version 3.4.3 instead of 3.5.0. When installing this version, I get errors when creating views in an empty database.

[error] 2025-06-10T10:36:40.975010Z couchdb@localhost <0.1105.0> -------- OS Process Error <0.1107.0> :: {os_process_error,{exit_status,134}}
[info] 2025-06-10T10:36:40.975063Z couchdb@localhost <0.289.0> -------- couch_proc_manager <0.1107.0> died normal

Also, the link to download 3.4.3 on the website (https://couchdb.apache.org/#download) actually points to the corrupt 3.5.0 version.

When downloading/installing Couchdb 3.4.3 via https://couchdb.neighbourhood.ie/downloads/3.4.3/mac/x86_64/Apache-CouchDB.zip, everything is fine.

Steps to Reproduce

Expected Behaviour

The Couchdb version of the downloaded binary should be 3.5.0 and creating views should work without errors.

Your Environment

  • CouchDB version used: 3.5.0
  • Browser name and version: Firefox 139.0.1
  • Operating system and version: macOS 15.5 on an Intel Mac.

StephanU avatar Jun 10 '25 10:06 StephanU

Curious if you have a chance to test, does this happen with both the default Spidermonkey and the QuickJS engines?

You can toggle the config with https://docs.couchdb.org/en/stable/config/couchdb.html#couchdb/js_engine and restart and see if it's the same error.

Exit status 134 indicates a SIGABRT exit, which could also be from an out of memory or stack overflow perhaps or hit some internal assert?

nickva avatar Jun 10 '25 16:06 nickva

Changing the js engine to QuickJS seems to solve the "exit status 134" problem.

StephanU avatar Jun 10 '25 19:06 StephanU

Thanks for trying it out @StephanU. It points to an issue with the spidermonkey process only then.

If you want you can keep it on QuickJS. We converted almost all our clusters at Cloudant to QuickJS already and have been running with it in production for more than half a year now.

There are some minor incompatibilities https://docs.couchdb.org/en/stable/best-practices/jsdevel.html#quickjs-vs-spidermonkey-incompatibilities. Most incompatibilities we found were actually between the older Spidermonkey 1.8.5 vs later Spidermonkey 91 or QuickJS versions not between QuickJS and recent Spidermonkey versions.

nickva avatar Jun 10 '25 20:06 nickva

I think it’s a packaging problem of the macOS convenience binary (I guess a missing SpiderMonkey dylib). See #4381 and #4372.

You could test it if you install SpiderMonkey via brew install spidermonkey and try to run the CouchDB macOS app again.

big-r81 avatar Jun 10 '25 22:06 big-r81

A little inspection:

Trying to run couchjs gives:

big-r@EiMac:~/Downloads/Apache CouchDB.app/Contents/Resources/couchdbx-core/bin$ ./couchjs -V
dyld[81295]: Library not loaded: lib/libmozjs-128.dylib
  Referenced from: <E75FB9F3-7E41-3E00-AD64-3E2D43946132> /Users/big-r/Downloads/Apache CouchDB.app/Contents/Resources/couchdbx-core/bin/couchjs (built for macOS 15.0 which is newer than running OS)
  Reason: tried: 'lib/libmozjs-128.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OSlib/libmozjs-128.dylib' (no such file), 'lib/libmozjs-128.dylib' (no such file)
Abort trap: 6

Looking at the linked libraries. The libraries are in the lib directory, but I think the path is wrong.

big-r@EiMac:~/Downloads/Apache CouchDB.app/Contents/Resources/couchdbx-core/bin$ otool -L ./couchjs 
./couchjs:
	lib/libmozjs-128.dylib (compatibility version 1.0.0, current version 1.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1351.0.0)
	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 1800.105.0)

Trying to append the lib directory gives:

big-r@EiMac:~/Downloads/Apache CouchDB.app/Contents/Resources/couchdbx-core/bin$ DYLD_LIBRARY_PATH=./../lib/:$DYLD_LIBRARY_PATH ./couchjs -V
dyld[81298]: Symbol not found: _ureldatefmt_formatNumeric_76
  Referenced from: <1A37D60A-5A92-3E8F-A9E4-03F0519C87E6> /Users/big-r/Downloads/Apache CouchDB.app/Contents/Resources/couchdbx-core/lib/libmozjs-128.dylib
  Expected in:     <5358CA0B-E943-3B4F-89CB-0A5612C3C51B> /Users/big-r/Downloads/Apache CouchDB.app/Contents/Resources/couchdbx-core/lib/libicui18n.77.1.dylib
Abort trap: 6

cc @janl ^

big-r81 avatar Jun 11 '25 06:06 big-r81

I think it’s a packaging problem of the macOS convenience binary (I guess a missing SpiderMonkey dylib). See #4381 and #4372.

You could test it if you install SpiderMonkey via brew install spidermonkey and try to run the CouchDB macOS app again.

I installed SpiderMonkey (128.11.0), changed the JS Engine to 'spidermonkey', restarted CouchDB and the error is back.

StephanU avatar Jun 11 '25 07:06 StephanU