I take that back a bit. The database read fails to acquire the lock even though the write (in another thread) does release it. The reads in the writing thread do work (because they are in the same thread, as per the lock design) as do the reads in the UI thread. But in this one particular thread the read fails. Grr…