This is a corollary to this question.
I've got a Mac app that uses sqlite pretty extensively. Several threads are deadlocking in sqlite code without using any shared resources. I've set up sqlite_config_log via the sqlite3_config function, and I keep getting this message with code 28:
file renamed while open:
Code 28 is SQLITE_WARNING. I found what appears to be the source code that logs that warning (search the page for "file renamed while open"), and it seems like it should be giving me the path to the offending file, but that doesn't come through in the log statement. I've even put a breakpoint in my log function and inspected the memory of the "file renamed" string, and there is no filename there; it's not just cutting off the log because of an errant null character.
I also know that I'm not actually renaming the file. It's giving me this warning right after the file is created. And the same code runs in an iOS app (which is linked against sqlite version 3.7.13, while the Mac is at 3.8.5) without generating the warning. So, the question: what could cause this warning besides renaming the file?
Update: The warning does not appear if the database is converted to DELETE journal mode before having any statements run against it.