Wallet backups and other DB examination are easily possible in a safe, atomic, transactional fashion... if and only if DB_PRIVATE flag is removed.
--- a/db.cpp
+++ b/db.cpp
@@ -77,7 +77,6 @@ CDB::CDB(const char* pszFile, const char* pszMode) : pdb(NULL)
DB_INIT_MPOOL |
DB_INIT_TXN |
DB_THREAD |
- DB_PRIVATE |
DB_RECOVER,
S_IRUSR | S_IWUSR);
What, if any, problems arise from doing this? Obviously, this does not cover the non-db4 databases such as the block data file.