Re-submitted cause line color in red didn’t come thru. [] around the reported line
Subject: sqlite testing with Boundschecker Hi, I have done some testing with 3.2 and now 3.4, visual studio2003 and boundschecker (and XP). I get a few reported errors when I simply do the .dump command with no db. Happens on other times with a db, this is easier. Line numbers are from the downloaded 3.4.0 source. I don’t really know how the vdbe works, so not sure how to start on solving the write overrun one… Thanks, damian Vdbeaux.c sqlite3VdbeChangeP3 line 534 Memory block at address void* _Src = 0x0012C92C in argument 2 in memcpy is too small, should be 17, was 16. if( pKeyInfo ){ unsigned char *aSortOrder; [memcpy(pKeyInfo, zP3, nByte);] aSortOrder = pKeyInfo->aSortOrder; Write Overrun: Memory write to 0x010D8A88 (2) overruns destination block 0x010D89F8 (60) allocated by HeapAlloc. Vdbe.c, sqlite3VdbeExec, Line 701. This occurs when running sqlite3.exe with no db, then executing .dump, then second breakpoint on the pTos->flags line invokes this boundschecker error. case OP_Integer: { pTos++; [pTos->flags = MEM_Int;] pTos->u.i = pOp->p1; break; } Resource Leak Exiting Program: Handle 0x00000014 allocated by TlsAlloc. Os_win.c line 1730 if( !keyInit ){ sqlite3OsEnterMutex(); if( !keyInit ){ [key = TlsAlloc();] if( key==0xffffffff ){ sqlite3OsLeaveMutex(); return 0; } Dangling Pointer: Pointer 0x010D9250, allocated by HeapAlloc, has already been freed. Vdbe.c sqlite3VdbeExec Line 469 if( p->magic!=VDBE_MAGIC_RUN ) return SQLITE_MISUSE; assert( db->magic==SQLITE_MAGIC_BUSY ); [pTos = p->pTos;] if( p->rc==SQLITE_NOMEM ){ Pointer Error: Pointer 0x010DA9F0, used as an argument, is out of range; no longer within block 0x010DAA30 (204), allocated by malloc. Vdbeaux.c, sqlite3VdbeMakeReady line 889 <red> for(n=0; n<p->nMem; n++){ p->aMem[n].flags = MEM_Null; } [p->pTos = &p->aStack[-1];] p->pc = -1; p->rc = SQLITE_OK; similar error Cleanup, line 967 static void Cleanup(Vdbe *p){ int i; if( p->aStack ){ releaseMemArray(p->aStack, 1 + (p->pTos - p->aStack)); [p->pTos = &p->aStack[-1];] } closeAllCursors(p); Similar error vdbe.c sqlite3VdbeExec, line2681 sqlite3VdbeMemIntegerify(pTos); iDb = pTos->u.i; assert( (pTos->flags & MEM_Dyn)==0 ); [pTos--;] assert( iDb>=0 && iDb<db->nDb ); Unrelated Pointer: Comparing two unrelated pointers 0x010D8A30 and 0x010D8A70. Pointers are not within the same buffer. Vdbe.c sqlite3VdbeExec line 983 static void Cleanup(Vdbe *p){ int i; if( p->aStack ){ [releaseMemArray(p->aStack, 1 + (p->pTos - p->aStack));] p->pTos = &p->aStack[-1]; } Unrelated Pointer: Comparing two unrelated pointers 0x010DAD10 and 0x010DACD0. Pointers are not within the same buffer. Vdbe.c sqlite3VdbeExec – line 983 pFirstColumn = &pTos[0-pOp->p1]; [for(pMem = p->aStack; pMem<pFirstColumn; pMem++){] Deephemeralize(pMem); } Unrelated Pointer: Comparing two unrelated pointers 0x010D8A30 and 0x010D8A70. Pointers are not within the same buffer. Vdbeaux.c Cleanup, line 966 static void Cleanup(Vdbe *p){ int i; if( p->aStack ){ [releaseMemArray(p->aStack, 1 + (p->pTos - p->aStack));] p->pTos = &p->aStack[-1]; } Unrelated Pointer: Comparing two unrelated pointers 0x010DAD10 and 0x010DACD0. Pointers are not within the same buffer. Vdbe.c sqlite3VdbeExec line 983 pFirstColumn = &pTos[0-pOp->p1]; [for(pMem = p->aStack; pMem<pFirstColumn; pMem++){] Deephemeralize(pMem); } No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.5.476 / Virus Database: 269.9.14/882 - Release Date: 30/06/2007 3:10 PM No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.5.476 / Virus Database: 269.9.14/882 - Release Date: 30/06/2007 3:10 PM