I think the issue is : Thread 1 does exitprocess/terminateprocess (or process.kill, or anything like that) Thread 2 does write() -- the write I believe can be interrupted when partially complete in these cases (only part of the blocks have been written to disk, the others are not even scheduled). When a database has overflow chains (and a chain is being modified), this is particularly disastrous.
-----Original Message----- From: sqlite-users-boun...@sqlite.org [mailto:sqlite-users-boun...@sqlite.org] On Behalf Of D. Richard Hipp Sent: Wednesday, October 14, 2009 2:57 PM To: General Discussion of SQLite Database Subject: Re: [sqlite] Corrupted database On Oct 14, 2009, at 2:51 PM, Reusche, Andrew wrote: > We get a "2" returned when we check synchronous. I think that's the > enum for "full". We do not explicitely kill any threads, but when we > decide to reboot or shutdown, we call "ExitProcess(0)" without > stopping > any DB threads, and I'm sure this isn't very healthy. I don't think that should cause problems. But on the other hand, I'm a unix programmer and I sometimes find the behavior of windows to be baffling. On windows, if you do a write() followed immediately by ExitProcess(), is it the case that the write might not actually occur? D. Richard Hipp d...@hwaci.com _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users