Find a file
Dan Stillman 59a3568213 Fix database access on network filesystems on macOS and Linux
On macOS, SQLite chooses locking methods based on the filesystem
containing the database, and network filesystems (e.g., SMB, NFS),
read-only volumes, and filesystems without byte-range locking get
methods without shared-memory support, which WAL requires. Opening a
database with an adjacent WAL file on those crashes -- Mozilla's VFS
wrapper hides the missing shared-memory methods from SQLite's WAL
support check -- so the first Zotero 10 run converted the database to
WAL and every launch after that segfaulted during connection
initialization.

On macOS, mirror SQLite's method selection and use a rollback journal
when shared memory isn't available, converting an existing WAL database
before opening it: an empty WAL by reverting the header format versions
in place, and a non-empty WAL by replaying it into a temporary copy on
local disk that replaces the database file only after passing an
integrity check. A WAL file next to an already-converted database
(e.g., from an interrupted conversion) goes through the same
conversion. Also use openNotExclusive during integrity checks and
corruption recovery, which otherwise fail on SMB shares with an I/O
error from the exclusive open lock.

This corrects 22055d92b7, which passed openNotExclusive on all
platforms for an open failure described as affecting macOS and Linux,
and expected locking_mode=EXCLUSIVE to keep the WAL index in heap
memory with no -shm file. Neither claim held up: mozStorage opens the
WAL while initializing the connection, before any pragma can run, so
the index uses shared memory unless the exclusive VFS is in use, and
the exclusive open works on Linux CIFS mounts -- where non-exclusive
access instead made SQLite's lock-upgrade sequence trip over the SMB
byte-range lock mapping, leaving startup hung and the database never
created. So pass openNotExclusive only on macOS. On Linux this restores
unix-excl, which performs all locking under a single held lock and
keeps the WAL index in heap memory; Windows has no distinct exclusive
VFS and is unaffected.

https://forums.zotero.org/discussion/133258/

(cherry picked from commit bba85a3939)
2026-08-18 17:24:44 -04:00
.github/workflows CI: Don't run duplicate jobs for same-repo pull requests 2026-07-08 10:50:32 -04:00
app Fix changelog URL generation for two-digit major versions 2026-08-17 12:30:00 -04:00
chrome Fix database access on network filesystems on macOS and Linux 2026-08-18 17:24:44 -04:00
defaults/preferences Reader: Add support code for popup position persistence 2026-08-11 17:03:43 -04:00
document-worker@6d0c0ce45d Update document-worker submodule 2026-07-15 12:52:00 -04:00
js-build Add SDT support 2026-06-12 13:47:08 +03:00
note-editor@acec74d09b Improve undo/redo in the note editor (#3398) 2026-07-31 14:22:53 +02:00
reader@132bb78793 Update reader submodule 2026-08-14 13:41:53 -04:00
resource Update translators 2026-08-17 09:43:56 -04:00
scripts Fix locale update script under rpl 2.x 2026-08-17 09:58:44 -04:00
scss Fix retracted-item icon spacing in items list 2026-08-01 10:42:29 -04:00
styles@dff7452b24 Update translators, styles, CSL locales, and renamed-styles.json 2026-04-02 15:51:43 -04:00
test Fix database access on network filesystems on macOS and Linux 2026-08-18 17:24:44 -04:00
translators@56eaac33b1 Update translators 2026-08-17 09:43:56 -04:00
types/gecko fx140: Update type definitions 2025-07-30 22:30:37 -04:00
.babelrc Use production builds of react libraries (#4482) 2024-08-02 03:43:02 -04:00
.gitattributes Update Linux updater for Zotero 7 2023-05-20 10:51:47 +00:00
.gitignore Use user-provided codesign script for Windows signing 2024-04-08 10:12:58 +01:00
.gitmodules Rename pdf-worker submodule to document-worker 2026-04-22 15:50:02 -04:00
chrome.manifest Remove old citation dialogs (#5177) 2025-04-02 05:26:06 -04:00
CLAUDE.md Rename pdf-worker submodule to document-worker 2026-04-22 15:50:02 -04:00
CONTRIBUTING.md Add "support questions" to CONTRIBUTING.md 2022-12-01 05:10:42 -05:00
COPYING Update COPYING 2018-03-26 11:27:48 +02:00
eslint.config.mjs Convert ItemPane{SectionElement,Container}Base to ES modules 2026-05-18 15:48:31 -04:00
package-lock.json Update package-lock.json 2026-01-29 13:22:13 -05:00
package.json Upgrade ftl-tx. Fix #5671. 2025-12-20 02:22:23 +01:00
README.md "Zotero wiki" → "Zotero documentation" in app build README 2023-04-26 04:40:22 -04:00
update.rdf Update Fx minVersion to 45 2016-12-13 09:12:55 -05:00
version Update version to 10.0 2026-04-10 13:41:18 -04:00

Zotero

CI

Zotero is a free, easy-to-use tool to help you collect, organize, cite, and share your research sources.

Please post feature requests or bug reports to the Zotero Forums. If you're having trouble with Zotero, see Getting Help.

For more information on how to use this source code, see the Zotero documentation.