[yunqa.de] DiSQlite, Integrity Check, and ESET Smart Security

  • From: Clyde England <clyde@xxxxxxxx>
  • To: yunqa@xxxxxxxxxxxxx
  • Date: Sat, 15 Aug 2009 22:02:48 +0800

Hi,

I have a rather bizarre issue that I wonder if anyone else has run into
and/or can offer any insight.

I am the author of a program for a niche market that enjoys a modest number
of users, but at least we are talking in the thousands.

I use Sqlite (DiSqlite3) for all my database needs and my install ships a
small database used for "lookups". This database has about 8 tables and 10
indexes. Nothing very special, the tables are quite small and the whole
database is under 1mb in size. Just the sort of thing SQLite is great for.
This database is only for "read" and is never written to.

I am a little on the cautious side, so on program start up I always do an
integrity check on this lookup database ("Pragma Integrity_check"), just to
make sure all is well.

I just released an update to my program, and I had two users (Windows XP)
report that they *always* get an integrity check error on program start.
None of the other users reported this error, just these two. The problem
seems to be with the indexes and I see many rows with the message something
like "rowid 3059 missing from index .....". I understand this is typical of
what you would expect to see if the indexes were corrupt on a SQLite
database. I have never had this error from anyone in previous releases of my
program. The only thing different this time was that I added some more
records to some of the tables.

To rule out it was not *just* my program I got both of these users to
download SQLiteSpy and open this database and do the integrity check. Sure
enough, they got exactly the same list of errors using SQLiteSpy

Now, here come the weird part. I thought that perhaps this file had somehow
been corrupted on their computers, so I got them both to email me this
database. When I do the Integrity check on both the sent databases there are
*no* errors!.

After much debugging with without any real result, the only thing I could
put it down to was their virus scanner. They both happen to use ESET Smart
Security for virus protection. So it looks to me like this program is
somehow intercepting the read of the SQLite database (when an Integrity
check is done) in such a way that SQLite sees it as being corrupt.

It also seems to be a "magic number" type of thing, because I have other
databases that the integrity check works just fine for these two. Also the
previous version of the "lookup" database (minus the few hundred records)
also passes the integrity check for these users.

I repeat that all my other users don't have a problem - only these two that
just happen to have the same virus scanning product. I will also repeat that
when they send me the database it all checks out OK.

So I guess my questions are:

1. Has anyone else run into a similar problem with this or any other Virus
scanner?
2. If you have, did you find a solution?
3. Any other ideas, suggestions, comments?

Thanks
Clyde

Other related posts:

  • » [yunqa.de] DiSQlite, Integrity Check, and ESET Smart Security - Clyde England