Ran into this recently, it's happened on one machine running a beta test of our software. This is a multi-threaded application, and I've run into a sequence of steps that deadlocks hard that as far as I can tell from the documentation shouldn't. This is using SQLite 3.7.13 with SEE. The source database is using WAL mode, all transactions are done as IMMEDIATE, synchronous mode is set to 0, and it is encrypted. The destination database for the backup is not encrypted, and is default (non-WAL, full synchronous) modes.
There are multiple threads active: - one performing a write - two performing reads - one closing a connection - one is in the middle of a backup operation Here are the call stacks for the threads: Writing thread: sqlite3_step sqlite3VdbeExec sqlite3VdbeHalt sqlite3BtreeCommitPhaseOne sqlite3PagerCommitPhaseOne pagerWalFrames sqlite3BackupUpdate backupOnePage sqlite3BtreeEnter lockBtreeMutex pthread_mutex_lock __psynch_mutexwait Closing a connection thread: sqlite3_close sqlite3BtreeEnterAll sqlite3BtreeEnter lockBtreeMutex pthread_mutex_lock __psynch_mutexwait Reading thread: sqlite3_step sqlite3VdbeExec sqlite3VdbeEnter sqlite3BtreeEnter lockBtreeMutex pthread_mutex_lock __psynch_mutexwait Backing up thread: sqlite3_backup_step sqlite3BtreeEnter lockBtreeMutex pthread_mutex_lock __psynch_mutexwait Reading thread: sqlite3_step sqlite3VdbeExec sqlite3VdbeEnter sqlite3BtreeEnter lockBtreeMutex pthread_mutex_lock __psynch_mutexwait Also, the destination database for the backup is created on the stack by the the thread doing the backup and is never passed out to anybody (explicitly). What looks like is happening to me is that the writing and backing-up thread are deadlocking with each other, with 'sqlite3BackupUpdate' attempting to update the backup destination database. Unfortunately, this is not something I've reproduced locally, so I can't look parameters or lock states. I'm going to try, as a kind of hail-mary, putting a BEGIN IMMEDIATE transactions around the backup to block writing during the database backup. If anyone has any suggestions or ideas about what I might be doing wrong here, I'd appreciate it. _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users