Hello.

I'm seeing SQLITE_IOERR_READ errors in an application that reads from a SQLite 
.db file in one or more threads.? The 3.6.14.2 SQLite Amalgamation was compiled 
with SQLITE_THREADSAFE=1 defined.? Each thread has its own sqlite3* that is 
openned with sqlite3_open_v2 using these flags:? 
SQLITE_OPEN_READONLY|SQLITE_OPEN_FULLMUTEX.? The SELECT statements are prepared 
(in the thread, during each read) using sqlite3_prepare_v2.? The errors occur 
during the sqlite3_step(...) call.? The error is "disk I/O error" and the 
extended error code is SQLITE_IOERR_READ.? The error seems to occur in 
sqlite3.c's winRead(...) function during a ReadFile(...) call.


When I limit the number of "read threads" to 1, GetLastError() reports:
ERROR_NOACCESS
998 (0x3E6) Invalid access to memory location.


When I limit the number of "read threads" to 3, GetLastError() reports:
ERROR_INVALID_USER_BUFFER
1784 (0x6F8) The supplied user buffer is not valid for the requested operation.
This page (http://msdn.microsoft.com/en-us/library/aa365467.aspx) indicates 
that ERROR_INVALID_USER_BUFFER can occur "whenever there are too many 
outstanding asynchronous I/O requests".


If these error messages indicate that I might be using (or building) SQLite 
incorrectly, can you provide any input on what might be incorrect?


Thank you for your time.


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

Reply via email to