On Sep 16, 2008, at 5:19 AM, Sathish R wrote: > 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?
Yes. 3.2.1 is over 3 years old now. Hundreds of bugs have been fixed since then. Odds are that the problem you're experiencing has been fixed, or, if not, you stand a much better chance of getting help with it if using 3.6.2. Dan. _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users