Controlling the busy timeout is a must in some circumstances.
http://code.google.com/p/sqlite-manager/issues/detail?id=399
sqlite3_busy_timeout() allows sqlite3_step() to do retries up to allocated max time. Since SQLite works to minimize the amount of time that EXCLUSIVE locks are held for the writing external process reading process (sqlite-manager) will manage to acquire the SHARED lock for the reading and will avoid the failure.