Hi, Below is the code sequence after making a breakpoint at robust_ftruncate()
i could see that "robust_ftruncate" and "ts_ftruncate" is called couple of times before the error is given to the user Breakpoint 2, ts_ftruncate (fd=5, n=297136) at ./src/test_syscall.c:273 273 if( tsIsFailErrno("ftruncate") ){ (gdb) break robust_ftruncate Breakpoint 3 at 0x66b14: file sqlite3.c, line 23589. (gdb) continue Continuing. Breakpoint 3, robust_ftruncate (h=6, sz=0) at sqlite3.c:23589 23589 do{ rc = osFtruncate(h,sz); }while( rc<0 && errno==EINTR ); (gdb) next Breakpoint 2, ts_ftruncate (fd=6, n=297136) at ./src/test_syscall.c:273 273 if( tsIsFailErrno("ftruncate") ){ (gdb) 276 return orig_ftruncate(fd, n); (gdb) 277 } (gdb) robust_ftruncate (h=6, sz=0) at sqlite3.c:23590 23590 return rc; (gdb) 23591 } (gdb) unixTruncate (id=0x14c660, nByte=0) at sqlite3.c:26364 26364 if( rc ){ (gdb) 26365 pFile->lastErrno = errno; (gdb) 26366 return unixLogError(SQLITE_IOERR_TRUNCATE, "ftruncate", pFile->zPath); (gdb) 26383 } (gdb) sqlite3OsTruncate (id=0x14c660, size=0) at sqlite3.c:15035 15035 } (gdb) pager_end_transaction (pPager=0x14c4c8, hasMaster=1, bCommit=1) at sqlite3.c:39296 39296 pPager->journalOff = 0; (gdb) 39331 sqlite3BitvecDestroy(pPager->pInJournal); (gdb) 39332 pPager->pInJournal = 0; (gdb) 39333 pPager->nRec = 0; (gdb) 39334 sqlite3PcacheCleanAll(pPager->pPCache); (gdb) 39335 sqlite3PcacheTruncate(pPager->pPCache, pPager->dbSize); (gdb) 39337 if( pagerUseWal(pPager) ){ (gdb) 39344 }else if( rc==SQLITE_OK && bCommit && pPager->dbFileSize>pPager->dbSize ){ (gdb) 39355 if( !pPager->exclusiveMode (gdb) 39356 && (!pagerUseWal(pPager) || sqlite3WalExclusiveMode(pPager->pWal, 0)) (gdb) 39358 rc2 = pagerUnlockDb(pPager, SHARED_LOCK); (gdb) 39359 pPager->changeCountDone = 0; (gdb) 39361 pPager->eState = PAGER_READER; (gdb) 39362 pPager->setMaster = 0; (gdb) 39364 return (rc==SQLITE_OK?rc2:rc); (gdb) 39365 } (gdb) sqlite3PagerCommitPhaseTwo (pPager=0x14c4c8) at sqlite3.c:43389 43389 return pager_error(pPager, rc); (gdb) 43390 } (gdb) sqlite3BtreeCommitPhaseTwo (p=0x162b70, bCleanup=1) at sqlite3.c:51637 51637 if( rc!=SQLITE_OK && bCleanup==0 ){ (gdb) 51641 pBt->inTransaction = TRANS_READ; (gdb) 51644 btreeEndTransaction(p); (gdb) 51645 sqlite3BtreeLeave(p); (gdb) 51646 return SQLITE_OK; (gdb) 51647 } (gdb) vdbeCommit (db=0x16bad0, p=0x164ab8) at sqlite3.c:60633 60633 for(i=0; i<db->nDb; i++){ (gdb) 60639 sqlite3EndBenignMalloc(); (gdb) 60640 enable_simulated_io_errors(); (gdb) 60642 sqlite3VtabCommit(db); (gdb) 60646 return rc; (gdb) 60647 } (gdb) sqlite3VdbeHalt (p=0x164ab8) at sqlite3.c:60879 60879 if( rc==SQLITE_BUSY && p->readOnly ){ (gdb) 60882 }else if( rc!=SQLITE_OK ){ (gdb) 60886 db->nDeferredCons = 0; (gdb) 60887 sqlite3CommitInternalChanges(db); (gdb) 60879 if( rc==SQLITE_BUSY && p->readOnly ){ (gdb) 60892 db->nStatement = 0; (gdb) 60911 if( eStatementOp ){ (gdb) 60928 if( p->changeCntOn ){ (gdb) 60938 sqlite3VdbeLeave(p); (gdb) 60942 if( p->pc>=0 ){ (gdb) 60943 db->activeVdbeCnt--; (gdb) 60944 if( !p->readOnly ){ (gdb) 60949 p->magic = VDBE_MAGIC_HALT; (gdb) 60951 if( p->db->mallocFailed ){ (gdb) 60964 return (p->rc==SQLITE_BUSY ? SQLITE_BUSY : SQLITE_OK); (gdb) 60965 } (gdb) sqlite3VdbeExec (p=0x164ab8) at sqlite3.c:66964 66964 sqlite3CloseSavepoints(db); (gdb) 66965 if( p->rc==SQLITE_OK ){ (gdb) 66966 rc = SQLITE_DONE; (gdb) 66970 goto vdbe_return; (gdb) 70404 db->lastRowid = lastRowid; (gdb) 70405 sqlite3VdbeLeave(p); (gdb) 70406 return rc; (gdb) 70444 } (gdb) sqlite3Step (p=0x164ab8) at sqlite3.c:62345 62345 db->vdbeExecCnt--; (gdb) 62351 if( rc!=SQLITE_ROW && db->xProfile && !db->init.busy && p->zSql ){ (gdb) 62358 if( rc==SQLITE_DONE ){ (gdb) 62360 p->rc = doWalCallbacks(db); (gdb) 62361 if( p->rc!=SQLITE_OK ){ (gdb) 62366 db->errCode = rc; (gdb) 62367 if( SQLITE_NOMEM==sqlite3ApiExit(p->db, p->rc) ){ (gdb) 62382 if( p->isPrepareV2 && rc!=SQLITE_ROW && rc!=SQLITE_DONE ){ (gdb) 62389 return (rc&db->errMask); (gdb) 62390 } (gdb) sqlite3_step (pStmt=0x164ab8) at sqlite3.c:62425 62425 if( rc2!=SQLITE_OK && ALWAYS(v->isPrepareV2) && ALWAYS(db->pErr) ){ (gdb) 62444 rc = sqlite3ApiExit(db, rc); (gdb) 62445 sqlite3_mutex_leave(db->mutex); (gdb) 62446 return rc; (gdb) 62447 } (gdb) dbEvalStep (p=0x7efff1a0) at ./src/tclsqlite.c:1401 1401 if( rcs==SQLITE_ROW ){ (gdb) 1404 if( p->pArray ){ (gdb) 1407 rcs = sqlite3_reset(pStmt); (gdb) 1409 pDb->nStep = sqlite3_stmt_status(pStmt,SQLITE_STMTSTATUS_FULLSCAN_STEP,1); (gdb) 1410 pDb->nSort = sqlite3_stmt_status(pStmt,SQLITE_STMTSTATUS_SORT,1); (gdb) 1411 pDb->nIndex = sqlite3_stmt_status(pStmt,SQLITE_STMTSTATUS_AUTOINDEX,1); (gdb) 1412 dbReleaseColumnNames(p); (gdb) 1413 p->pPreStmt = 0; (gdb) 1415 if( rcs!=SQLITE_OK ){ (gdb) 1434 dbReleaseStmt(pDb, pPreStmt, 0); (gdb) 1388 while( p->zSql[0] || p->pPreStmt ){ (gdb) 1390 if( p->pPreStmt==0 ){ (gdb) 1391 zPrevSql = (p->zSql==zPrevSql ? 0 : p->zSql); (gdb) 1392 rc = dbPrepareAndBind(p->pDb, p->zSql, &p->zSql, &p->pPreStmt); (gdb) 1393 if( rc!=TCL_OK ) return rc; (gdb) 1388 while( p->zSql[0] || p->pPreStmt ){ (gdb) 1390 if( p->pPreStmt==0 ){ (gdb) 1396 SqliteDb *pDb = p->pDb; (gdb) 1397 SqlPreparedStmt *pPreStmt = p->pPreStmt; (gdb) 1398 sqlite3_stmt *pStmt = pPreStmt->pStmt; (gdb) 1400 rcs = sqlite3_step(pStmt); (gdb) Breakpoint 3, robust_ftruncate (h=5, sz=0) at sqlite3.c:23589 23589 do{ rc = osFtruncate(h,sz); }while( rc<0 && errno==EINTR ); (gdb) Breakpoint 2, ts_ftruncate (fd=5, n=297136) at ./src/test_syscall.c:273 273 if( tsIsFailErrno("ftruncate") ){ (gdb) 276 return orig_ftruncate(fd, n); (gdb) 277 } (gdb) robust_ftruncate (h=5, sz=0) at sqlite3.c:23590 23590 return rc; (gdb) 23591 } (gdb) unixTruncate (id=0x15beb8, nByte=0) at sqlite3.c:26364 26364 if( rc ){ (gdb) 26365 pFile->lastErrno = errno; (gdb) 26366 return unixLogError(SQLITE_IOERR_TRUNCATE, "ftruncate", pFile->zPath); (gdb) 26383 } (gdb) sqlite3OsTruncate (id=0x15beb8, size=0) at sqlite3.c:15035 15035 } (gdb) pager_end_transaction (pPager=0x15bd20, hasMaster=0, bCommit=1) at sqlite3.c:39296 39296 pPager->journalOff = 0; (gdb) 39331 sqlite3BitvecDestroy(pPager->pInJournal); (gdb) 39332 pPager->pInJournal = 0; (gdb) 39333 pPager->nRec = 0; (gdb) 39334 sqlite3PcacheCleanAll(pPager->pPCache); (gdb) 39335 sqlite3PcacheTruncate(pPager->pPCache, pPager->dbSize); (gdb) 39337 if( pagerUseWal(pPager) ){ (gdb) 39344 }else if( rc==SQLITE_OK && bCommit && pPager->dbFileSize>pPager->dbSize ){ (gdb) 39355 if( !pPager->exclusiveMode (gdb) 39356 && (!pagerUseWal(pPager) || sqlite3WalExclusiveMode(pPager->pWal, 0)) (gdb) 39358 rc2 = pagerUnlockDb(pPager, SHARED_LOCK); (gdb) 39359 pPager->changeCountDone = 0; (gdb) 39361 pPager->eState = PAGER_READER; (gdb) 39362 pPager->setMaster = 0; (gdb) 39364 return (rc==SQLITE_OK?rc2:rc); (gdb) 39365 } (gdb) sqlite3PagerCommitPhaseTwo (pPager=0x15bd20) at sqlite3.c:43389 43389 return pager_error(pPager, rc); (gdb) 43390 } (gdb) sqlite3BtreeCommitPhaseTwo (p=0x15bac8, bCleanup=0) at sqlite3.c:51637 51637 if( rc!=SQLITE_OK && bCleanup==0 ){ (gdb) 51638 sqlite3BtreeLeave(p); (gdb) 51639 return rc; (gdb) 51647 } (gdb) vdbeCommit (db=0x16bad0, p=0x14bcb8) at sqlite3.c:60485 60485 for(i=0; rc==SQLITE_OK && i<db->nDb; i++){ (gdb) 60491 if( rc==SQLITE_OK ){ (gdb) 60646 return rc; (gdb) 60647 } (gdb) sqlite3VdbeHalt (p=0x14bcb8) at sqlite3.c:60879 60879 if( rc==SQLITE_BUSY && p->readOnly ){ (gdb) 60882 }else if( rc!=SQLITE_OK ){ (gdb) 60883 p->rc = rc; (gdb) 60884 sqlite3RollbackAll(db, SQLITE_OK); (gdb) 60879 if( rc==SQLITE_BUSY && p->readOnly ){ (gdb) 60892 db->nStatement = 0; (gdb) 60911 if( eStatementOp ){ (gdb) 60928 if( p->changeCntOn ){ (gdb) 60929 if( eStatementOp!=SAVEPOINT_ROLLBACK ){ (gdb) 60930 sqlite3VdbeSetChanges(db, p->nChange); (gdb) 60934 p->nChange = 0; (gdb) 60938 sqlite3VdbeLeave(p); (gdb) 60942 if( p->pc>=0 ){ (gdb) 60943 db->activeVdbeCnt--; (gdb) 60944 if( !p->readOnly ){ (gdb) 60945 db->writeVdbeCnt--; (gdb) 60949 p->magic = VDBE_MAGIC_HALT; (gdb) 60951 if( p->db->mallocFailed ){ (gdb) 60964 return (p->rc==SQLITE_BUSY ? SQLITE_BUSY : SQLITE_OK); (gdb) 60965 } (gdb) sqlite3VdbeExec (p=0x14bcb8) at sqlite3.c:64908 64908 if( rc==SQLITE_BUSY ){ (gdb) 64913 rc = p->rc ? SQLITE_ERROR : SQLITE_DONE; (gdb) 64915 goto vdbe_return; (gdb) 70404 db->lastRowid = lastRowid; (gdb) 70405 sqlite3VdbeLeave(p); (gdb) 70406 return rc; (gdb) 70444 } (gdb) sqlite3Step (p=0x14bcb8) at sqlite3.c:62345 62345 db->vdbeExecCnt--; (gdb) 62351 if( rc!=SQLITE_ROW && db->xProfile && !db->init.busy && p->zSql ){ (gdb) 62358 if( rc==SQLITE_DONE ){ (gdb) 62366 db->errCode = rc; (gdb) 62367 if( SQLITE_NOMEM==sqlite3ApiExit(p->db, p->rc) ){ (gdb) 62382 if( p->isPrepareV2 && rc!=SQLITE_ROW && rc!=SQLITE_DONE ){ (gdb) 62387 rc = sqlite3VdbeTransferError(p); (gdb) 62389 return (rc&db->errMask); (gdb) 62390 } (gdb) sqlite3_step (pStmt=0x14bcb8) at sqlite3.c:62425 62425 if( rc2!=SQLITE_OK && ALWAYS(v->isPrepareV2) && ALWAYS(db->pErr) ){ (gdb) 62444 rc = sqlite3ApiExit(db, rc); (gdb) 62445 sqlite3_mutex_leave(db->mutex); (gdb) 62446 return rc; (gdb) 62447 } (gdb) dbEvalStep (p=0x7efff1a0) at ./src/tclsqlite.c:1401 1401 if( rcs==SQLITE_ROW ){ (gdb) 1404 if( p->pArray ){ (gdb) 1407 rcs = sqlite3_reset(pStmt); (gdb) 1409 pDb->nStep = sqlite3_stmt_status(pStmt,SQLITE_STMTSTATUS_FULLSCAN_STEP,1); (gdb) 1410 pDb->nSort = sqlite3_stmt_status(pStmt,SQLITE_STMTSTATUS_SORT,1); (gdb) 1411 pDb->nIndex = sqlite3_stmt_status(pStmt,SQLITE_STMTSTATUS_AUTOINDEX,1); (gdb) 1412 dbReleaseColumnNames(p); (gdb) 1413 p->pPreStmt = 0; (gdb) 1415 if( rcs!=SQLITE_OK ){ (gdb) 1418 dbReleaseStmt(pDb, pPreStmt, 1); (gdb) 1420 if( p->pDb->bLegacyPrepare && rcs==SQLITE_SCHEMA && zPrevSql ){ (gdb) 1430 Tcl_SetObjResult(pDb->interp, (gdb) 1431 Tcl_NewStringObj(sqlite3_errmsg(pDb->db), -1)); (gdb) 1430 Tcl_SetObjResult(pDb->interp, (gdb) 1432 return TCL_ERROR; (gdb) 1441 } (gdb) DbObjCmd (cd=0x15d298, interp=0x122198, objc=3, objv=0x12302c) at ./src/tclsqlite.c:2259 2259 dbEvalFinalize(&sEval); (gdb) 2260 if( rc==TCL_BREAK ){ (gdb) 2264 Tcl_DecrRefCount(pRet); (gdb) 2284 break; (gdb) 2862 return rc; (gdb) 2863 } (gdb) 0x2aaf4348 in ?? () (gdb) Cannot find bounds of current function -- View this message in context: http://sqlite.1065341.n5.nabble.com/TCL-Test-failures-on-ARM-tp67612p67668.html Sent from the SQLite mailing list archive at Nabble.com. _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users