What seems to be happening is that upon the first update, all files are created normally. Upon the second update, saving the sbtore files succeeds but saving the pset files doesn't. The data in memory *is* updated, though.
When the user restarts the browser, our corruption detection will see that the sbstore data is not in sync with the pset data, and blow away the database.
Bugs are:
a) prefixSet->WriteFile(); in Classifier.cpp doesn't have its return value checked
b) Windows doesn't allow us to rename into the file (SafeOutputStream) while we have an open read handle to it. This is a known problem that was fixed in HashStore.cpp but missed in LookupCache.cpp
c) I think its possible to make a testcase for this, so we should probably do that.