Project

General

Profile

Actions

UserMaintenanceAndTroubleshouting

Restoring application data from a block device backup.

In /data/data there is the application data.

The issue is that just copying the /data/data/<application> from a block device backup will not always work. In some cases, the application will crash like that:

01-02 06:49:06.105  5938  5951 E SQLiteLog: (14) os_unix.c:31282: (13) open(/data/user/0/org.smssecure.smssecure/databases/_jobqueue-SilenceJobs) - 
01-02 06:49:06.110  5938  5951 E SQLiteDatabase: Failed to open database '/data/user/0/org.smssecure.smssecure/databases/_jobqueue-SilenceJobs'.
01-02 06:49:06.110  5938  5951 E SQLiteDatabase: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
01-02 06:49:06.110  5938  5951 E SQLiteDatabase:     at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
01-02 06:49:06.110  5938  5951 E SQLiteDatabase:     at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:207)
01-02 06:49:06.110  5938  5951 E SQLiteDatabase:     at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:191)
01-02 06:49:06.110  5938  5951 E SQLiteDatabase:     at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
01-02 06:49:06.110  5938  5951 E SQLiteDatabase:     at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
01-02 06:49:06.110  5938  5951 E SQLiteDatabase:     at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
01-02 06:49:06.110  5938  5951 E SQLiteDatabase:     at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:806)
01-02 06:49:06.110  5938  5951 E SQLiteDatabase:     at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:791)
01-02 06:49:06.110  5938  5951 E SQLiteDatabase:     at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
01-02 06:49:06.110  5938  5951 E SQLiteDatabase:     at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:234)
01-02 06:49:06.110  5938  5951 E SQLiteDatabase:     at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:187)https://redmine.replicant.us/projects/replicant/issues/new
01-02 06:49:06.110  5938  5951 E SQLiteDatabase:     at org.whispersystems.jobqueue.persistence.PersistentStorage.getJobs(PersistentStorage.java:80)
01-02 06:49:06.110  5938  5951 E SQLiteDatabase:     at org.whispersystems.jobqueue.persistence.PersistentStorage.getAllUnencrypted(PersistentStorage.java:71)
01-02 06:49:06.110  5938  5951 E SQLiteDatabase:     at org.whispersystems.jobqueue.JobManager$LoadTask.run(JobManager.java:153)
01-02 06:49:06.110  5938  5951 E SQLiteDatabase:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
01-02 06:49:06.110  5938  5951 E SQLiteDatabase:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
01-02 06:49:06.110  5938  5951 E SQLiteDatabase:     at java.lang.Thread.run(Thread.java:818)
01-02 06:49:06.110  5938  5951 E AndroidRuntime: FATAL EXCEPTION: pool-1-thread-1
01-02 06:49:06.110  5938  5951 E AndroidRuntime: Process: org.smssecure.smssecure, PID: 5938
01-02 06:49:06.110  5938  5951 E AndroidRuntime: Theme: themes:{}

The above crash occured while switching between Replicant 6.0 minor revisions (6.0 0003 -> 6.0-dev -> 6.0 0003).

Several systems permission systems are in use:
  • Unix permissions (also known as DAC or Discretionary access control)
  • Selinux permissions (also known as MAC or Mandatory Access Control)
Also note that:
  • su -l <the application username> will not give you the same selinux context as what the application is running so that doesn't help for debugging.

Updated by Denis 'GNUtoo' Carikli over 4 years ago ยท 1 revisions

Also available in: PDF HTML TXT