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

Reply via email to