Hi All,
We are using sqlite3 (version 3.2.1) in our product and we are experiencing
a problem of infinite loop from sqlite3_close(). The problem is
intermittently reproduced and I am not sure about the exact sequence.
I have described the details below. is anybody else faced similar problem
before? Can someone please help me here?

we have thread safe enabled.

We collected a core when our process is stuck in infinte loop and one thread
is infinitely looping in the below marked loop within sqlite3_close(). So,
it holds the mutex and some other threads are blocked waiting for that
mutex.

#ifndef SQLITE_OMIT_GLOBALRECOVER
  {
    sqlite3 *pPrev = pDbList;
    sqlite3OsEnterMutex();
    while( pPrev && pPrev->pNext!=db ){ -> one thread is infinite looping in
this while()
      pPrev = pPrev->pNext;
    }
    if( pPrev ){
      pPrev->pNext = db->pNext;
    }else{
      assert( pDbList==db );
      pDbList = db->pNext;
    }
    sqlite3OsLeaveMutex();
  }
#endif

I printed the pDbList from core and the list doesn't seem to end and the
link list seems to have become a cyclic one somehow.

(gdb) p pDbList
$40 = (sqlite3 *) 0x36d00bb8
(gdb) p pDbList->pNext
$41 = (sqlite3 *) 0x107b77a8
(gdb) p pDbList->pNext->pNext
$42 = (sqlite3 *) 0x107b77a8 -> link list becomes cyclic...no NULL.

Note: I saw that this entire logic of link list and global recovery doesn't
exist in recent 3.6.2 code base. Should I consider upgrading to newer
libsqlite library to avoid this problem?

Thanks,
Sathish R.
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to