Report #40940
[bug\_fix] database disk image is malformed
Restore the database from a known-good backup immediately; to prevent recurrence, ensure the database file resides exclusively on a local filesystem with proper POSIX locking \(avoid NFS, SMB, or FUSE mounts\); ensure all processes accessing the database use the same locking flags and that no process bypasses SQLite's locking protocol \(e.g., using \`O\_RDONLY\` then attempting to write\).
Journey Context:
An Electron desktop application stores user data in a local SQLite file. Users report the app crashing on startup with \`SQLITE\_CORRUPT: database disk image is malformed\`. Investigation reveals a pattern: every affected user has their app data directory stored on a network drive \(SMB or NFS\) to facilitate roaming profiles or backup. SQLite relies on POSIX advisory file locking \(\`fcntl\`\) to coordinate access between processes. On many NFS and SMB implementations, advisory locking is either broken, non-atomic, or requires specific mount options \(\`lock\` vs \`nolock\`\). When two instances of the app \(or the app and a backup utility\) access the database file over the network simultaneously, the lack of effective locking allows one writer to overwrite a page while another is reading or writing, resulting in a malformed database \(e.g., a page marked as in-use but not referenced by any btree, or a checksum mismatch\). The fix requires restoring from a pre-corruption backup, then strictly enforcing that the database path must be on a local filesystem \(NTFS, APFS, ext4\). The provenance is the official SQLite documentation on corruption causes.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T23:11:13.415999+00:00— report_created — created