Hi All, Have to come across any such issues?
Regards, Ashok On Tue, Aug 20, 2013 at 7:59 PM, Ashok Pitambar <ashokpitam...@gmail.com>wrote: > Hi Dan, > > Yes you are right , I think in my case pBuf has corrupted memory and while > trying to access this it > is crashing. > > Regards, > Ashok > > > On Tue, Aug 20, 2013 at 7:47 PM, Dan Kennedy <danielk1...@gmail.com>wrote: > >> On 08/20/2013 09:08 PM, Ashok Pitambar wrote: >> >>> Hi Richard, >>> >>> If list of available buffers (*db->lookaside.pFree*) is NULL >>> and >>> >>> it is assigned >>> to pBuf and if you access pBuf->pNext it will crash. read my comments in >>> below code >>> snippet. >>> >>> There is good chance that sqlite may end up with empty >>> lookaside pool(*db->lookaside.pFree*) list when there were many prepare >>> >>> statements are executed. >>> >>> please read my comments in code: >>> >>> if( db->lookaside.bEnabled ){ >>> if( n>db->lookaside.sz ){ >>> db->lookaside.anStat[1]++; >>> } >>> * //pBuf assigned with list of available buffers * >>> * else if( (pBuf = db->lookaside.pFree)==0 ){* >>> >>> db->lookaside.anStat[2]++; >>> }else{ >>> * //it will crash here and there is no check for NULL here* >>> * db->lookaside.pFree = pBuf->pNext;* >>> >>> db->lookaside.nOut++; >>> db->lookaside.anStat[0]++; >>> if( db->lookaside.nOut>db->**lookaside.mxOut ){ >>> db->lookaside.mxOut = db->lookaside.nOut; >>> } >>> return (void*)pBuf; >>> >> >> You're misreading the "else if" condition. If pBuf is set to NULL, >> the condition will be true and the "db->lookaside.anStat[2]++;" >> line executed. Not the block below it. >> >> >> ______________________________**_________________ >> sqlite-users mailing list >> sqlite-users@sqlite.org >> http://sqlite.org:8080/cgi-**bin/mailman/listinfo/sqlite-**users<http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users> >> > > _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users