On 06/20/2013 03:20 PM, Owen Haynes wrote:
Hello,
I am currently having some problems with the unlock notify and getting in a
state of deadlock.
I am using code based on http://www.sqlite.org/unlock_notify.html, with
the latest sqlite.
The setup is as follows:
- WAL is on
- Multi Threaded is on
- Temp store is memory
- Database is stored in /dev/shm
- Synchronous is set as normal
- Multi-threading is on
- connection is set as SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE |
SQLITE_OPEN_NOMUTEX | SQLITE_OPEN_SHAREDCACHE
Unlock notify does work I can see my log messages printed when the callback
is called but sometimes I can end up in the following dead lock situation.
Each connection is in its own thread
*Deadlock 1*
Connection A is using database
Connection B is waiting on Connection A
Connection C is waiting on Connection B
Connection A is has finished
Connection B is waiting on Connection A
Connection C is waiting on Connection B
*Deadlock 2*
Connection A is using database
Connection B is waiting on Connection A
Connection C is waiting on Connection A
Connection A is has finished
Connection B is waiting on Connection A
Connection C is waiting on Connection A
For some reason sometimes the notify callback does not get issued and end
up with 2 threads waiting for the callback back to be issued.
Connection B is a writer thread the others only read.
Any ideas?
Are you handling the case where the xNotify callback is invoked by
sqlite3_unlock_notify() before it returns?
Dan.
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users