Status Update
Comments
[Deleted User] <[Deleted User]> #2
This is probably happening because there are multiple instances of DataStore active. You should consider managing the DataStore as a singleton. See the attached bug for more info.
ra...@google.com <ra...@google.com>
[Deleted User] <[Deleted User]> #3
Mi A1 (tissot_sprout) 2,901 33.2%
Z60 (Z60) 1,384 15.8%
Nokia 1 (FRT) 1,287 14.7%
Moto G(4) Plus (athene_f) 548 6.3%
```
at android.database.sqlite.SQLiteConnection.nativeOpen (SQLiteConnection.java)
at android.database.sqlite.SQLiteConnection.open (SQLiteConnection.java:209)
at android.database.sqlite.SQLiteConnection.open (SQLiteConnection.java:193)
at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked (SQLiteConnectionPool.java:463)
at android.database.sqlite.SQLiteConnectionPool.open (SQLiteConnectionPool.java:185)
at android.database.sqlite.SQLiteConnectionPool.open (SQLiteConnectionPool.java:177)
at android.database.sqlite.SQLiteDatabase.openInner (SQLiteDatabase.java:808)
at android.database.sqlite.SQLiteDatabase.open (SQLiteDatabase.java:793)
at android.database.sqlite.SQLiteDatabase.openDatabase (SQLiteDatabase.java:696)
at android.app.ContextImpl.openOrCreateDatabase (ContextImpl.java:680)
at android.content.ContextWrapper.openOrCreateDatabase (ContextWrapper.java:289)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked (SQLiteOpenHelper.java:223)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase (SQLiteOpenHelper.java:163)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase (FrameworkSQLiteOpenHelper.java:92)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase (FrameworkSQLiteOpenHelper.java:53)
at androidx.room.RoomDatabase.beginTransaction (RoomDatabase.java:352)
at androidx.work.impl.utils.ForceStopRunnable.cleanUp (ForceStopRunnable.java:135)
at androidx.work.impl.utils.ForceStopRunnable.run (ForceStopRunnable.java:79)
at androidx.work.impl.utils.SerialExecutor$Task.run (SerialExecutor.java:91)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:607)
at java.lang.Thread.run (Thread.java:761)
```
[Deleted User] <[Deleted User]> #4
The stack traces are as reported by ar...@zomato.com.
ra...@google.com <ra...@google.com> #5
Does your app use Room independently, and if so are you using a recent version of Room ?
vi...@gmail.com <vi...@gmail.com> #6
Galaxy S9 (starlte) 846 11.4%
Galaxy S10 (beyond1) 449 6.0%
Galaxy S8 (dreamqltecan) 439 5.9%
Galaxy A8(2018) (jackpotlte) 413 5.6%
Galaxy S9+ (star2lte) 315 4.2%
Android 9 3,894 52.5%
Android 10 2,980 40.2%
Android 8.0 267 3.6%
Android 8.1 108 1.5%
ra...@google.com <ra...@google.com> #7
Please switch to the latest stable version of WorkManager
(2.3.4
). We made some fixes around bursty enqueue-ing of WorkRequest
s which might have created rare crashes in the past.
[Deleted User] <[Deleted User]> #8
This crash is still occurring for the iflix Application using WorkManager 2.3.4 and Room 2.2.5.
[Deleted User] <[Deleted User]> #9
android.database.sqlite.SQLiteCantOpenDatabaseException:
at android.database.sqlite.SQLiteConnection.nativeOpen (SQLiteConnection.java)
at android.database.sqlite.SQLiteConnection.open (SQLiteConnection.java:209)
at android.database.sqlite.SQLiteConnection.open (SQLiteConnection.java:193)
at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked (SQLiteConnectionPool.java:463)
at android.database.sqlite.SQLiteConnectionPool.open (SQLiteConnectionPool.java:185)
at android.database.sqlite.SQLiteConnectionPool.open (SQLiteConnectionPool.java:177)
at android.database.sqlite.SQLiteDatabase.openInner (SQLiteDatabase.java:808)
at android.database.sqlite.SQLiteDatabase.open (SQLiteDatabase.java:793)
at android.database.sqlite.SQLiteDatabase.openDatabase (SQLiteDatabase.java:696)
at android.app.ContextImpl.openOrCreateDatabase (ContextImpl.java:723)
at android.content.ContextWrapper.openOrCreateDatabase (ContextWrapper.java:299)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked (SQLiteOpenHelper.java:254)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase (SQLiteOpenHelper.java:194)
at com.google.android.datatransport.runtime.scheduling.persistence.SQLiteEventStore$$Lambda$1.produce (SQLiteEventStore.java:2)
at com.google.android.datatransport.runtime.scheduling.persistence.SQLiteEventStore.retryIfDbLocked (SQLiteEventStore.java:456)
at com.google.android.datatransport.runtime.scheduling.persistence.SQLiteEventStore.getDb (SQLiteEventStore.java:80)
at com.google.android.datatransport.runtime.scheduling.persistence.SQLiteEventStore.runCriticalSection (SQLiteEventStore.java:488)
at com.google.android.datatransport.runtime.scheduling.jobscheduling.WorkInitializer.lambda$ensureContextsScheduled$1 (WorkInitializer.java:54)
at com.google.android.datatransport.runtime.scheduling.jobscheduling.WorkInitializer$$Lambda$1.run (WorkInitializer.java:2)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
at java.lang.Thread.run (Thread.java:764)
ra...@google.com <ra...@google.com> #10
Does the app support direct boot mode ?
[Deleted User] <[Deleted User]> #11
ra...@google.com <ra...@google.com> #12
The library where the stack track is coming from is com.google.android.datatransport.runtime.scheduling.jobscheduling
. Is this library using WorkManager
?
Unfortunately, we need a bug report from the device and more logs to be able to help you.
[Deleted User] <[Deleted User]> #13
Unfortunately we can't reproduce this in any of the devices we have. Some of which are reported by Play Console to be ones on which crashes do happen.
But... Looking at the crash reports from the Play Console, it would seem that the work-manager issue has been resolved, and all the new stack-traces are coming from com.google.android.datatransport
, which is apparently firebase code.
ad...@gmail.com <ad...@gmail.com> #14
The same stack trace appears only on these devices:
Xiaomi Mi A1
Nokia 3
Xiaomi Mi A2 Lite
Motorola moto g(6) play
Android versions
Android 9 (SDK 28) - 8 times more than next position (Android 10)
Android 10 (SDK 29)
Android 6.0 (SDK 23)
Android 7.0 (SDK 24)
etc
Occurrences (last 60 days)
127
Impacted users
6
App is
android.database.sqlite.SQLiteException:
at android.database.sqlite.SQLiteConnection.nativeOpen (Native Method)
at android.database.sqlite.SQLiteConnection.open (SQLiteConnection.java:211)
at android.database.sqlite.SQLiteConnection.open (SQLiteConnection.java:195)
at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked (SQLiteConnectionPool.java:503)
at android.database.sqlite.SQLiteConnectionPool.open (SQLiteConnectionPool.java:204)
at android.database.sqlite.SQLiteConnectionPool.open (SQLiteConnectionPool.java:196)
at android.database.sqlite.SQLiteDatabase.openInner (SQLiteDatabase.java:880)
at android.database.sqlite.SQLiteDatabase.open (SQLiteDatabase.java:865)
at android.database.sqlite.SQLiteDatabase.openDatabase (SQLiteDatabase.java:739)
at android.database.sqlite.SQLiteDatabase.openDatabase (SQLiteDatabase.java:729)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked (SQLiteOpenHelper.java:355)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase (SQLiteOpenHelper.java:298)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase (FrameworkSQLiteOpenHelper.java:145)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase (FrameworkSQLiteOpenHelper.java:106)
at androidx.room.RoomDatabase.beginTransaction (RoomDatabase.java:352)
at androidx.work.impl.utils.ForceStopRunnable.cleanUp (ForceStopRunnable.java:156)
at androidx.work.impl.utils.ForceStopRunnable.run (ForceStopRunnable.java:87)
at androidx.work.impl.utils.SerialExecutor$Task.run (SerialExecutor.java:91)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
at java.lang.Thread.run (Thread.java:764)
ze...@hotmail.com <ze...@hotmail.com> #15
Galaxy S3 with Android 9
Our app does _not_ use Room nor SQLite at all. This started to happen as soon as we added workers.
These workers are run that way
WorkManager workManager = WorkManager.getInstance(context);
workManager.enqueue(new OneTimeWorkRequest.Builder(ImportWorker.class).setInputData(builder.getData()).build());
Caused by android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14 SQLITE_CANTOPEN): Could not open database
at android.database.sqlite.SQLiteConnection.nativeOpen(SQLiteConnection.java)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:212)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:196)
at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:503)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:204)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:196)
at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:880)
at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:865)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:739)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:729)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:355)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:298)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase(FrameworkSQLiteOpenHelper.java:145)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.java:106)
at androidx.room.RoomDatabase.inTransaction(RoomDatabase.java:476)
at androidx.room.RoomDatabase.assertNotSuspendingTransaction(RoomDatabase.java:281)
at androidx.work.impl.model.SystemIdInfoDao_Impl.getWorkSpecIds(SystemIdInfoDao_Impl.java:120)
at androidx.work.impl.background.systemjob.SystemJobScheduler.reconcileJobs(SystemJobScheduler.java:284)
at androidx.work.impl.utils.ForceStopRunnable.cleanUp(ForceStopRunnable.java:199)
at androidx.work.impl.utils.ForceStopRunnable.forceStopRunnable(ForceStopRunnable.java:165)
at androidx.work.impl.utils.ForceStopRunnable.run(ForceStopRunnable.java:102)
at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
sh...@adobe.com <sh...@adobe.com> #16
ra...@google.com <ra...@google.com> #17
This typically happens when the device is running out of storage space. We are adding a couple of APIs in 2.6
to give the application a chance to catch the exception and show some UI.
ra...@google.com <ra...@google.com> #18
In the meantime, you can try using an uncaught exception handler, to do the same.
li...@gmail.com <li...@gmail.com> #19
I am having same issue with 2.5.0, our app has a DAU of 1M and this crash occurred 3k times in past month. Majority (90% is on Android 10, 6% on Android 8, 3% on Android 9, 1% on Android 7)
WorkManager.getInstance(BaseApplication.getContext()).enqueueUniqueWork(uniqueWorkName,
ExistingWorkPolicy.KEEP,
request)
Stack trace is as follows
java.lang.IllegalStateException:
at androidx.work.impl.utils.ForceStopRunnable.run (ForceStopRunnable.java:120)
at androidx.work.impl.utils.SerialExecutor$Task.run (SerialExecutor.java:91)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
at java.lang.Thread.run (Thread.java:919)
Caused by: android.database.sqlite.SQLiteCantOpenDatabaseException:
at android.database.sqlite.SQLiteConnection.nativeOpen (SQLiteConnection.java)
at android.database.sqlite.SQLiteConnection.open (SQLiteConnection.java:300)
at android.database.sqlite.SQLiteConnection.open (SQLiteConnection.java:218)
at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked (SQLiteConnectionPool.java:737)
at android.database.sqlite.SQLiteConnectionPool.open (SQLiteConnectionPool.java:284)
at android.database.sqlite.SQLiteConnectionPool.open (SQLiteConnectionPool.java:251)
at android.database.sqlite.SQLiteDatabase.openInner (SQLiteDatabase.java:1386)
at android.database.sqlite.SQLiteDatabase.open (SQLiteDatabase.java:1331)
at android.database.sqlite.SQLiteDatabase.openDatabase (SQLiteDatabase.java:967)
at android.database.sqlite.SQLiteDatabase.openDatabase (SQLiteDatabase.java:955)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked (SQLiteOpenHelper.java:448)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase (SQLiteOpenHelper.java:391)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase (FrameworkSQLiteOpenHelper.java:145)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase (FrameworkSQLiteOpenHelper.java:106)
at androidx.room.RoomDatabase.inTransaction (RoomDatabase.java:476)
at androidx.room.RoomDatabase.assertNotSuspendingTransaction (RoomDatabase.java:281)
at androidx.work.impl.model.SystemIdInfoDao_Impl.getWorkSpecIds (SystemIdInfoDao_Impl.java:120)
at androidx.work.impl.background.systemjob.SystemJobScheduler.reconcileJobs (SystemJobScheduler.java:284)
at androidx.work.impl.utils.ForceStopRunnable.cleanUp (ForceStopRunnable.java:199)
at androidx.work.impl.utils.ForceStopRunnable.forceStopRunnable (ForceStopRunnable.java:165)
at androidx.work.impl.utils.ForceStopRunnable.run (ForceStopRunnable.java:102)
at androidx.work.impl.utils.SerialExecutor$Task.run (SerialExecutor.java:91)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
at java.lang.Thread.run (Thread.java:919)
ji...@samsung.com <ji...@samsung.com> #20
zh...@gmail.com <zh...@gmail.com> #21
[Deleted User] <[Deleted User]> #22
dm...@gmail.com <dm...@gmail.com> #23
This keeps happening on version 2.7.0
Description
Version used: 2.2.0
Devices/Android versions reproduced on: Android TV devices running Android OS versions 7.0, 8.0, 8.1 and 9.0.
After adding an enqueueUniquePeriodicWork call into our app, we are getting reports in Play console of crashes with the following stack trace. There are ~10-20 of these crashes in our app per day. We are unable to reproduce this in even though we even have one of the devices reported by the Play console (nvidia shield android 9.0). There are also no stack trace lines with mention of any of our app code.
android.database.sqlite.SQLiteCantOpenDatabaseException:
at android.database.sqlite.SQLiteConnection.nativeOpen (SQLiteConnection.java)
at android.database.sqlite.SQLiteConnection.open (SQLiteConnection.java:212)
at android.database.sqlite.SQLiteConnection.open (SQLiteConnection.java:196)
at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked (SQLiteConnectionPool.java:503)
at android.database.sqlite.SQLiteConnectionPool.open (SQLiteConnectionPool.java:204)
at android.database.sqlite.SQLiteConnectionPool.open (SQLiteConnectionPool.java:196)
at android.database.sqlite.SQLiteDatabase.openInner (SQLiteDatabase.java:887)
at android.database.sqlite.SQLiteDatabase.open (SQLiteDatabase.java:872)
at android.database.sqlite.SQLiteDatabase.openDatabase (SQLiteDatabase.java:739)
at android.database.sqlite.SQLiteDatabase.openDatabase (SQLiteDatabase.java:729)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked (SQLiteOpenHelper.java:355)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase (SQLiteOpenHelper.java:298)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase (FrameworkSQLiteOpenHelper.java:92)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase (FrameworkSQLiteOpenHelper.java:53)
at androidx.room.RoomDatabase.beginTransaction (RoomDatabase.java:328)
at androidx.work.impl.utils.ForceStopRunnable.cleanUp (ForceStopRunnable.java:135)
at androidx.work.impl.utils.ForceStopRunnable.run (ForceStopRunnable.java:79)
at androidx.work.impl.utils.SerialExecutor$Task.run (SerialExecutor.java:91)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
at java.lang.Thread.run (Thread.java:764)