Consider the following build cmd line:

        gcc -o sqlite3.exe -DSQLITE_OMIT_WAL sqlite3.c shell.c

The build succeeds when using MinGW on Windows.

Now start the built exe with a memory database:

        sqlite3 :memory:

And execute the following query:

        create table v(y);
        with recursive cnt(x) as (select 1 union all select x+1 from cnt limit 
100000)
        insert into v select * from cnt;
        create index w on v(y);

And watch as it crashes when creating the index.

I tracked the problem down to the following missing library bindings:

        CreateFileMappingA
        CreateFileMappingW
        MapViewOfFile
        UnmapViewOfFile

All four of those library bindings are disabled by the existence of 
SQLITE_OMIT_WAL. sqlite tries to execute code at address 0 when the table to 
larger than some value. If I use 96255 instead of 100000 in the above query 
there is no crash. And increasing by one to 96256 the crash occurs.

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

Reply via email to