I use 3.8.8.1, source id is 2015-01-20 16:51:25 f73337e3e289915a76ca96e7a05a1a8d4e890d55
I compile the amalgamation using Visual Studio 2012. The options I use are: encoding='UTF-16le'; journal_mode=WAL; wal_autocheckpoint=20000; // better bulk speed inserts locking_mode=EXCLUSIVE; synchronous=NORMAL; page_size=4096; cache_size=16384; auto_vacuum=NONE; temp_store=MEMORY; foreign_keys=ON; I implement nested transactions using checkpoints, with an outer BEGIN TRANSACTION. 10 or more threads may have a database connection open, but each uses its own sqlite3 connection created via sqlite3_open_v2(). There are typically many readers, but only one writer (BEGIN IMMEDIATE) is used explicitly or implicity. Unfortunately, the database damage seems to happen in rarely used sections of the database file so the problem is only detected during the (usually) weekly diagnosis runs. I?m waiting for a ticket where the user encounters the damage problem and still has all the log files available. Since my application logs all non-OK SQLite return codes plus has an error callback, such a log file may provide additional info about how and when the damage happened.