This is happening when you open an empty file, correct? Is
the function sqlite3PagerPagecount() in file pager.c setting it's
output parameter to zero as we would expect?

i.e. at the end of sqlite3PagerPagecount():

   if( pnPage ){
     *pnPage = nPage;
   }

is nPage ever non-zero while running the test? If so, what
is the stack trace at that point?

Dan.



On Sep 11, 2009, at 4:31 PM, gprand wrote:

>
> Hi Richard,
> sqlite3Corrupt does trigger.
> Callstack dump:
>
> #0 00000000   decodeFlags(pPage=0xa026a4cc, flagByte=0) (SQLite 
> \btree.c:1325)
>
> #1 A000C1F8   btreeInitPage(pPage=0xa026a4cc) (SQLite\btree.c:1360)
>
> #2 A000CB88   getAndInitPage(pBt=0xa025bc28, pgno=1, ppPage=0xa0269f14)
> (SQLite\btree.c:1562)
>
> #3 A0011520   moveToRoot(pCur=0xa0269eb8) (SQLite\btree.c:4038)
>
> #4 A0011B40   sqlite3BtreeFirst(pCur=0xa0269eb8, pRes=0xa02525d8)
> (SQLite\btree.c:4143)
>
> #5 A00879D0   sqlite3VdbeExec(p=0xa026a038) (SQLite\vdbe.c:4542)
>
> #6 A008BB78   sqlite3Step(p=0xa026a038) (SQLite\vdbeapi.c:344)
>
> #7 A008BEC8   sqlite3_step(pStmt=0xa026a038) (SQLite\vdbeapi.c:403)
>
> #8 A003C018   sqlite3_exec(db=0xa025b858, zSql=0xa0268e88 "SELECT name,
> rootpage, sql FROM 'main'.sqlite_master", xCallback=0xa00590a8
> <sqlite3InitCallback>, pArg=0xa02527c4, pzErrMsg=0x0) (SQLite 
> \legacy.c:71)
>
> #9 A0059A80   sqlite3InitOne(db=0xa025b858, iDb=0, pzErrMsg=0xa0269178)
> (SQLite\prepare.c:329)
>
> #10 A0059C98  sqlite3Init(db=0xa025b858, pzErrMsg=0xa0269178)
> (SQLite\prepare.c:396)
>
> #11 A0059E08  sqlite3ReadSchema(pParse=0xa0269170) (SQLite\prepare.c: 
> 433)
>
> #12 A001B7E8  sqlite3LocateTable(pParse=0xa0269170, isView=0,
> zName=0xa0268f58 "user", zDbase=0x0) (SQLite\build.c:296)
>
> #13 A0070E9C  selectExpander(pWalker=0xa0252968, p=0xa0268ef0)
> (SQLite\select.c:3056)
>
> #14 A009AABC  sqlite3WalkSelect(pWalker=0xa0252968, p=0xa0268ef0)
> (SQLite\walker.c:131)
>
> #15 A0071868  sqlite3SelectExpand(pParse=0xa0269170,  
> pSelect=0xa0268ef0)
> (SQLite\select.c:3252)
>
> #16 A0071B18  sqlite3SelectPrep(pParse=0xa0269170, p=0xa0268ef0,
> pOuterNC=0x0) (SQLite\select.c:3335)
>
> #17 A0072364  sqlite3Select(pParse=0xa0269170, p=0xa0268ef0,
> pDest=0xa0252b78) (SQLite\select.c:3547)
>
> #18 A0050780  yy_reduce(yypParser=0xa0269380, yyruleno=111) (parse.y: 
> 399)
>
> #19 A00532AC  sqlite3Parser(yyp=0xa0269380, yymajor=1, yyminor={z =
> 0xa01a894a "user", n = 4}, pParse=0xa0269170) (parse.c:3691)
>
> #20 A0075AE8  sqlite3RunParser(pParse=0xa0269170, zSql=0xa01a893c  
> "select *
> from user", pzErrMsg=0xa0252ccc) (SQLite\tokenize.c:471)
>
> #21 A005A378  sqlite3Prepare(db=0xa025b858, zSql=0xa01a893c "select *  
> from
> user", nBytes=-1, saveSqlFlag=0, ppStmt=0xa0252d78, pzTail=0xa0252d7c)
> (SQLite\prepare.c:612)
>
> #22 A005A78C  sqlite3LockAndPrepare(db=0xa025b858, zSql=0xa01a893c  
> "select *
> from user", nBytes=-1, saveSqlFlag=0, ppStmt=0xa0252d78,  
> pzTail=0xa0252d7c)
> (SQLite\prepare.c:702)
>
> #23 A005A9C4  sqlite3_prepare(db=0xa025b858, zSql=0xa01a893c "select  
> * from
> user", nBytes=-1, ppStmt=0xa0252d78, pzTail=0xa0252d7c)
> (SQLite\prepare.c:765)
>
> #24 A003BF98  sqlite3_exec(db=0xa025b858, zSql=0xa01a893c "select *  
> from
> user", xCallback=0xa003fcd0 <callback>, pArg=0x0, pzErrMsg=0xa0252dbc)
> (SQLite\legacy.c:55)
>
> #25 A003FE44  sqtest() (SQLite\main_test.c:27)
>
> Dan Kennedy-4 wrote:
>>
>>
>> On Sep 11, 2009, at 1:58 PM, gprand wrote:
>>
>>>
>>> Hi Richard,
>>>
>>> First, thanks for replying to my problem.
>>>
>>> Definitely answer to your assumptions ist no. I can see the correct
>>> sql
>>> statement into the debugger, nothing is malformed. Checking
>>> sizeof(char)
>>> delivers 1. Processing the first 100 bytes does'nt produce error.
>>> Much more,
>>> processing of sqlite3_exec cause the error.
>>> It looks to me, that something goes wrong when sqlite creates its
>>> internal
>>> mastertable. May be, the error message belongs to this table, not to
>>> the
>>> database file? Unfortunately, the debugger is spoofed in some
>>> conditions, he
>>> cannot trace the tokenizer and I do not look through enough.
>>
>> Here is something to try:
>>
>> Compile the library with SQLITE_DEBUG defined. Then before running  
>> the
>> test,
>> put a breakpoint in each of sqlite3Corrupt() and corruptSchema()
>> functions.
>> See which one it hits and post the stack trace.
>>
>> Dan.
>>
>>
>>
>>> Regards,
>>>
>>> Gottfried
>>>
>>>
>>> D. Richard Hipp wrote:
>>>>
>>>>
>>>> On Sep 10, 2009, at 2:23 AM, gprand wrote:
>>>>> Program's output is:
>>>>> OPENX   16  /database_file.db 01002
>>>>> OPEN    16  /database_file.db
>>>>> READ    16    100       0 0
>>>>> SQL error: database disk image is malformed
>>>>
>>>> This indicates that SQLite is reading the first 100 bytes of the
>>>> database file (the database file header) and is either unable to  
>>>> read
>>>> those 100 bytes or after looking at those bytes determines that the
>>>> database file is malformed.
>>>>
>>>> Possible causes:  (1) your file I/O subsystem is doing some kind of
>>>> \n
>>>> to \r\n translation.  (2) when you copied the database file onto  
>>>> the
>>>> device, your copy utility corrupted the database file (again,
>>>> possibly
>>>> by \r to \r\n translation)  (3) your compiler somehow thinks that
>>>> sizeof(char)!=1.
>>>>
>>>> There might be other causes, but those are the ones that come to
>>>> mind.
>>>>
>>>>> CLOSE   16
>>>>
>>>> D. Richard Hipp
>>>> d...@hwaci.com
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> sqlite-users mailing list
>>>> sqlite-users@sqlite.org
>>>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>>>
>>>>
>>>
>>> -- 
>>> View this message in context:
>>> http://www.nabble.com/sqlite3_exec-fails-on-arm-tp25293839p25396004.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
>>
>> _______________________________________________
>> sqlite-users mailing list
>> sqlite-users@sqlite.org
>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>
>>
>
> -- 
> View this message in context: 
> http://www.nabble.com/sqlite3_exec-fails-on-arm-tp25293839p25397885.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

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to