Richard,
Thanks for looking into this.

I've placed some debug output in the sqlite2_step function
and I found that it returns SQLITE_MISUSE here:

--
   static int sqlite3Step(Vdbe *p){
   sqlite3 *db;
   int rc;

   assert(p);
   if( p->magic!=VDBE_MAGIC_RUN )
   {
     return SQLITE_MISUSE;
   }
--

I have no idea what this MAGIC_RUN means.

Does it indicate that infact I'm using an allready released statement ?

Please note that I'm not able to reproduce the problem when
I switch the shared cache off.

Thank you

Kind regards

Marcus Grimm


D. Richard Hipp wrote:
> On Mar 4, 2009, at 5:19 AM, Marcus Grimm wrote:
> 
>> Hi all,
>>
>> I'm doing a little stress test on a server application and run into
>> a problem when two threads are trying to access the database.
>> Here is the background:
>> 1. shared cache is enabled prior open any DB connection.
>> 2. Each thread then opens a DB connection.
>> 3. Thread A just reads table entries continuosly by
>>    doing sqlite3_prepare_v2 and followed by some sqlite3_step to  
>> parse the result set.
>>    He then uses sqlite3_finalize and after a few ms he repeats  
>> everything.
>> 4. Thread B is triggered to update or insert some a new values
>>    in some tables.
>>    To do so I obtain an EXCLUSIVE transaction, do the insert/update  
>> and COMIT.
>>
>> Now, a problem arises occasionally that thread A gets an  
>> SQLITE_MISUSE when
>> trying to call sqlite3_step, most likely because thread B currently  
>> writes into
>> the DB, I guess.
>>
>> Now, my question:
>>
>> How to handle the SQLITE_MISUSE ?
> 
> My guess is that the SQLITE_MISUSE is being returned because you are  
> calling sqlite3_step() with a statement that has already been  
> destroyed by sqlite3_finalize().
> 
> 
> D. Richard Hipp
> d...@hwaci.com
> 
> 
> 
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
> 

-- 
Marcus Grimm, MedCom GmbH Darmstadt, Rundeturmstr. 12, 64283 Darmstadt
Tel: +49(0)6151-95147-10
Fax: +49(0)6151-95147-20
--------------------------------------------------
MedCom slogans of the month:
"Vacation ? -- Every day at MedCom is a paid vacation!"
"Friday I have monday in my mind."
"MedCom -- Every week a vacation, every day an event, every hour a cliffhanger,
            every minute a climax."
"Damned, it's weekend again!"
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to