Después de un reinicio, perdí todas mis cuentas. miré en el logcat y obtuve:
04-02 11:54:01.535 5305 8068 E SQLiteLog: (11) statement aborts at 24: [SELECT key, value FROM extras WHERE accounts_id=(select _id FROM accounts WHERE name=? AND type=?)] database disk image is malformed
04-02 11:54:01.537 5305 8068 E DefaultDatabaseErrorHandler: Corruption reported by sqlite on database: /data/system/users/0/accounts.db
04-02 11:54:01.538 5305 8068 E DefaultDatabaseErrorHandler: deleting the database file: /data/system/users/0/accounts.db
He restaurado el archivo completamente desde un archivo XML de TitaniumBackup (por lo que la base de datos se crea de nuevo de forma limpia, sin copia de seguridad de un posible archivo db corrupto). Tras un reinicio, Android lo borra de nuevo y lo vuelve a crear, al acceder a él justo después de la restauración (es decir, utilizando un programa, que busca una cuenta) da el mensaje
04-02 11:45:22.855 12225 12225 W System.err: Caused by: java.lang.IllegalStateException: The database '/data/system/users/0/accounts.db' is not open.
justo después de la restauración, puedo abrir mi accounts.db con sqlite3
y SELECT * FROM ACCOUNTS
devuelve una lista correcta y SELECT key, value FROM extras
también funciona como se esperaba.
Los permisos de los archivos son
-rw-rw---- 1 system system 72K 2017-04-02 11:55 accounts.db
-rw------- 1 system system 17K 2017-04-02 11:55 accounts.db-journal
Mi ROM es CyanogenMod 13.