Yes I am covering the case where xNotify is called before sqlite3_unlock_notify is returned.
My struct which I pass into sqlite3_unlock_notify has a fired flag, this would then get set to true if xNotify is called in sqlite3_unlock_notify. This flag is then checked after the sqlite3_unlock_notify call to see if it has changed from false. I do near enough a carbon copy of the example code on http://www.sqlite.org/unlock_notify.html. Owen On 9 July 2013 10:08, Dan Kennedy <danielk1...@gmail.com> wrote: > 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<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<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