Fix "android.process.acore keeps stopping" when the contacts provider can't load it's db
3
votes
1
answer
839
views
My phone just decided that it should spam an exception onto my screen that reopens as soon as I tap it away.
A look at logcat reveals the following being thrown multiple times per second:
SQLiteLog: (14) cannot open file at line 34327 of [605907e73a]
SQLiteLog: (14) os_unix.c:34327: (13) open(/data/user/0/com.android.providers.contacts/databases/contacts2.db-shm) -
SQLiteLog: (14) statement aborts at 1: [PRAGMA user_version;] unable to open database file
SQLiteLog: (14) cannot open file at line 34327 of [605907e73a]
SQLiteLog: (14) os_unix.c:34327: (13) open(/data/user/0/com.android.providers.contacts/databases/contacts2.db-shm) -
AndroidRuntime: FATAL EXCEPTION: Worker-1
AndroidRuntime: Process: android.process.acore, PID: 9149
AndroidRuntime: android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file (code 14)
AndroidRuntime: at android.database.sqlite.SQLiteConnection.nativeExecuteForLong(Native Method)
AndroidRuntime: at android.database.sqlite.SQLiteConnection.executeForLong(SQLiteConnection.java:599)
AndroidRuntime: at android.database.sqlite.SQLiteSession.executeForLong(SQLiteSession.java:652)
AndroidRuntime: at android.database.sqlite.SQLiteStatement.simpleQueryForLong(SQLiteStatement.java:107)
AndroidRuntime: at android.database.DatabaseUtils.longForQuery(DatabaseUtils.java:842)
AndroidRuntime: at android.database.DatabaseUtils.longForQuery(DatabaseUtils.java:830)
AndroidRuntime: at android.database.sqlite.SQLiteDatabase.getVersion(SQLiteDatabase.java:940)
AndroidRuntime: at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:311)
AndroidRuntime: at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:262)
AndroidRuntime: at com.android.providers.contacts.LegacyApiSupport.(LegacyApiSupport.java:499)
AndroidRuntime: at com.android.providers.contacts.ContactsProvider2.initForDefaultLocale(ContactsProvider2.java:1668)
AndroidRuntime: at com.android.providers.contacts.ContactsProvider2.performBackgroundTask(ContactsProvider2.java:1759)
AndroidRuntime: at com.android.providers.contacts.ContactsProvider2$1.onPerformTask(ContactsProvider2.java:1615)
AndroidRuntime: at com.android.providers.contacts.ContactsTaskScheduler$MyHandler.handleMessage(ContactsTaskScheduler.java:77)
AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106)
AndroidRuntime: at android.os.Looper.loop(Looper.java:164)
AndroidRuntime: at android.os.HandlerThread.run(HandlerThread.java:65)
My guess would be, that - for whatever reason - the contacts provider was assigned a different user ID and has now lost access to it's own database. I would guess, that if I clear the database the issue is gone.
Still, I don't want to lose my contacts. I have a backup but that's old enough to say that I would lose some. I'm convinced that the file is still there and I can probably just open it as sqlite file once I gain access but I have no clue on how to achieve this. Trying to work with the
com.android.providers.contacts
package in adb always leaves me with "package not debuggable".
My Phone is a non-rooted Moto G5 Plus running Android 8.1
Is there a way to backup my contacts or are they gone? Also: Can I maybe just remove the *.db-shm
file that seems to be the problem here? As far as I remember that's only some temp file for sqlite anyways.
Asked by Link64
(141 rep)
Jan 28, 2019, 05:25 PM
Last activity: Jan 28, 2019, 05:55 PM
Last activity: Jan 28, 2019, 05:55 PM