> Why are you using a custom busy handler? Initially I did try to use the default handler but I kept on receiving the *'database is locked'* error immediately when multi-threads were trying to access the database simultaneously (using different connections of course). > The particular deadlock situation you are seeing is a "circular wait" Thank you for this explanation. I understand it now. > [my quote] Are we aware of any more such cases where sqlite is not calling the busy handler? I meant, are there known cases, like the one discussed here - `DEFERRED TRANSACTION`, and the one documented in sqlite - multiple processes.