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
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users