help-gnunet
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Help-gnunet] Corrupted sqlite db?


From: Christian Grothoff
Subject: Re: [Help-gnunet] Corrupted sqlite db?
Date: Sun, 9 Mar 2008 14:50:24 -0700
User-agent: KMail/1.9.7

On Sunday 09 March 2008, Milan wrote:
> Using 0.8.0pre0, everything was working well until today.  My computer
> did crash while gnunetd was running, and now I get this error (and only
> this one) as soon as my peer is connected:
>
> ERROR: `sqlite3_step' failed at sqlite.c:1341 with error: SQL logic
> error or missing database

That line is where the code issues an INSERT statement -- which happens 
without user action once other peers send data, which explains why it happens 
after the peer connects.

As far as the sqlite3-docs are concerned, this is an "internal error" (which I 
read as meaning "bug in sqlite3").  You could try to make sure that 
running "make check" (in sqstore_sqlite) passes (demonstrating that at least 
some basic GNUnet/sqlite functionality is working on your platform).  If that 
works, and if you want to pursue it faster, it might be a good idea to modify 
the test to use your "content.dat" file.  If it then crashes, you could file 
a more extensive report it to the sqlite developers and they might be able to 
reproduce & fix the issue.  

Now, the first thing I'd do is make sure that you run the latest stable sqlite 
version -- they may have fixed the bug already.

> I checked my /var/lib/gnunet/data/fs/content/content.dat file using:
> $ sqlite3 gnunet.dat .dump | sqlite3 content.dat.new
> $ mv content.dat.new content.dat
>
> And my database doesn't look to be corrupt.

I wonder if this load-dump is able to re-create the required indices as well.  
Now, without the indices, things should just be slow.

> Are there any checks I can perform? Is it possible that the database is
> consistent but that something is missing for gnunetd to be happy? There
> should definitely be a mechanism so that gnunetd repairs when possible
> the db.

Sounds to me like something in the database is corrupt that makes sqlite 
really unhappy.  I doubt that we can automatically repair it with the sqlite 
API.  I also don't know of any easy way to repair a broken sqlite database 
either (beyond what you've already tried).  This is one of the reasons why we 
have recommend MySQL for users who are able to handle the setup: the easier 
of recovery of crashed tables.  Now, obviously the (potential) data loss is 
not the issue here, but it may still be an interesting bug for the sqlite 
developers to resolve.  It certainly does not look like a bug in GNUnet 
itself.

> The file is "only" 200MB, so maybe I can send it if you need it.

I don't think *we* can do much with that file, but Richard Hipp or some other 
sqlite developer may find it useful.  

My 2 cents

Christian




reply via email to

[Prev in Thread] Current Thread [Next in Thread]