Closed HDGuy closed 3 years ago
Thx for reporting, though I do not reproduce, according to stack trace collected:
java.lang.RuntimeException: An error occurred while executing doInBackground()
at androidx.loader.content.ModernAsyncTask$3.done(SourceFile:164)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
at java.util.concurrent.FutureTask.run(FutureTask.java:271)
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)
Caused by: java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase: /mnt/expand/8dd8dabc-3498-4460-b91e-55a1491c4df1/user/0/org.courville.nova/databases/media.db
at android.database.sqlite.SQLiteClosable.acquireReference(SQLiteClosable.java:55)
at android.database.sqlite.SQLiteDatabase.endTransaction(SQLiteDatabase.java:564)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:404)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:298)
at com.archos.mediaprovider.DeleteOnDowngradeSQLiteOpenHelper.getWritableDatabase(SourceFile:48)
at com.archos.mediaprovider.DbHolder.get(SourceFile:47)
at com.archos.mediaprovider.video.VideoProvider.query(SourceFile:247)
at android.content.ContentProvider.query(ContentProvider.java:1149)
at android.content.ContentProvider$Transport.query(ContentProvider.java:241)
at android.content.ContentResolver.query(ContentResolver.java:802)
at android.content.ContentResolver.query(ContentResolver.java:752)
at androidx.core.content.ContentResolverCompat.query(SourceFile:81)
at androidx.loader.content.CursorLoader.loadInBackground(SourceFile:63)
at androidx.loader.content.CursorLoader.loadInBackground(SourceFile:41)
at androidx.loader.content.AsyncTaskLoader.onLoadInBackground(SourceFile:307)
at androidx.loader.content.AsyncTaskLoader$LoadTask.doInBackground(SourceFile:60)
at androidx.loader.content.AsyncTaskLoader$LoadTask.doInBackground(SourceFile:48)
at androidx.loader.content.ModernAsyncTask$2.call(SourceFile:141)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
... 3 more
Hi, I have the same on Freebox Pop.
Maybe this can help :
09-03 09:13:48.759 11727 11766 E SQLiteLog: (1) trigger show_delete already exists
09-03 09:13:48.759 11727 11766 E SQLiteLog: (11) database corruption at line 117820 of [68b898381a]
09-03 09:13:48.762 11727 11766 E SQLiteLog: (11) statement aborts at 11: [CREATE TRIGGER show_delete AFTER DELETE ON show BEGIN INSERT INTO delete_files(name) VALUES(OLD.cover_show);END] malformed database schema (show_delete) - trigger show_delete already e
09-03 09:13:48.762 11727 11766 E DefaultDatabaseErrorHandler: Corruption reported by sqlite on database: /data/user/0/org.courville.nova/databases/media.db
09-03 09:13:48.762 11727 11766 E DefaultDatabaseErrorHandler: deleting the database file: /data/user/0/org.courville.nova/databases/media.db
09-03 09:13:48.763 11727 11766 I SQLiteConnectionPool: The connection pool for /data/user/0/org.courville.nova/databases/media.db has been closed but there are still 1 connections in use. They will be closed as they are released back to the pool.
09-03 09:13:48.767 11727 11766 E AndroidRuntime: FATAL EXCEPTION: ModernAsyncTask #2
09-03 09:13:48.767 11727 11766 E AndroidRuntime: Process: org.courville.nova, PID: 11727
09-03 09:13:48.767 11727 11766 E AndroidRuntime: java.lang.RuntimeException: An error occurred while executing doInBackground()
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at androidx.loader.content.ModernAsyncTask$3.done(SourceFile:164)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at java.util.concurrent.FutureTask.run(FutureTask.java:271)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at java.lang.Thread.run(Thread.java:764)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: Caused by: java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase: /data/user/0/org.courville.nova/databases/media.db
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at android.database.sqlite.SQLiteClosable.acquireReference(SQLiteClosable.java:55)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at android.database.sqlite.SQLiteDatabase.endTransaction(SQLiteDatabase.java:564)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:404)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:298)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at com.archos.mediaprovider.DeleteOnDowngradeSQLiteOpenHelper.getWritableDatabase(SourceFile:48)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at com.archos.mediaprovider.DbHolder.get(SourceFile:47)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at com.archos.mediaprovider.video.VideoProvider.query(SourceFile:247)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at android.content.ContentProvider.query(ContentProvider.java:1149)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at android.content.ContentProvider$Transport.query(ContentProvider.java:241)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at android.content.ContentResolver.query(ContentResolver.java:802)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at android.content.ContentResolver.query(ContentResolver.java:752)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at androidx.core.content.ContentResolverCompat.query(SourceFile:81)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at androidx.loader.content.CursorLoader.loadInBackground(SourceFile:63)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at androidx.loader.content.CursorLoader.loadInBackground(SourceFile:41)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at androidx.loader.content.AsyncTaskLoader.onLoadInBackground(SourceFile:307)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at androidx.loader.content.AsyncTaskLoader$LoadTask.doInBackground(SourceFile:60)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at androidx.loader.content.AsyncTaskLoader$LoadTask.doInBackground(SourceFile:48)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at androidx.loader.content.ModernAsyncTask$2.call(SourceFile:141)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
09-03 09:13:48.767 11727 11766 E AndroidRuntime: ... 3 more
09-03 09:13:48.767 11727 11766 E ACRA : ACRA caught a RuntimeException for org.courville.nova
09-03 09:13:48.767 11727 11766 E ACRA : java.lang.RuntimeException: An error occurred while executing doInBackground()
09-03 09:13:48.767 11727 11766 E ACRA : at androidx.loader.content.ModernAsyncTask$3.done(SourceFile:164)
09-03 09:13:48.767 11727 11766 E ACRA : at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
09-03 09:13:48.767 11727 11766 E ACRA : at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
09-03 09:13:48.767 11727 11766 E ACRA : at java.util.concurrent.FutureTask.run(FutureTask.java:271)
09-03 09:13:48.767 11727 11766 E ACRA : at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
09-03 09:13:48.767 11727 11766 E ACRA : at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
09-03 09:13:48.767 11727 11766 E ACRA : at java.lang.Thread.run(Thread.java:764)
09-03 09:13:48.767 11727 11766 E ACRA : Caused by: java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase: /data/user/0/org.courville.nova/databases/media.db
09-03 09:13:48.767 11727 11766 E ACRA : at android.database.sqlite.SQLiteClosable.acquireReference(SQLiteClosable.java:55)
09-03 09:13:48.767 11727 11766 E ACRA : at android.database.sqlite.SQLiteDatabase.endTransaction(SQLiteDatabase.java:564)
09-03 09:13:48.767 11727 11766 E ACRA : at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:404)
09-03 09:13:48.767 11727 11766 E ACRA : at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:298)
09-03 09:13:48.767 11727 11766 E ACRA : at com.archos.mediaprovider.DeleteOnDowngradeSQLiteOpenHelper.getWritableDatabase(SourceFile:48)
09-03 09:13:48.767 11727 11766 E ACRA : at com.archos.mediaprovider.DbHolder.get(SourceFile:47)
09-03 09:13:48.767 11727 11766 E ACRA : at com.archos.mediaprovider.video.VideoProvider.query(SourceFile:247)
09-03 09:13:48.767 11727 11766 E ACRA : at android.content.ContentProvider.query(ContentProvider.java:1149)
09-03 09:13:48.767 11727 11766 E ACRA : at android.content.ContentProvider$Transport.query(ContentProvider.java:241)
09-03 09:13:48.767 11727 11766 E ACRA : at android.content.ContentResolver.query(ContentResolver.java:802)
09-03 09:13:48.767 11727 11766 E ACRA : at android.content.ContentResolver.query(ContentResolver.java:752)
09-03 09:13:48.767 11727 11766 E ACRA : at androidx.core.content.ContentResolverCompat.query(SourceFile:81)
09-03 09:13:48.767 11727 11766 E ACRA : at androidx.loader.content.CursorLoader.loadInBackground(SourceFile:63)
09-03 09:13:48.767 11727 11766 E ACRA : at androidx.loader.content.CursorLoader.loadInBackground(SourceFile:41)
09-03 09:13:48.767 11727 11766 E ACRA : at androidx.loader.content.AsyncTaskLoader.onLoadInBackground(SourceFile:307)
09-03 09:13:48.767 11727 11766 E ACRA : at androidx.loader.content.AsyncTaskLoader$LoadTask.doInBackground(SourceFile:60)
09-03 09:13:48.767 11727 11766 E ACRA : at androidx.loader.content.AsyncTaskLoader$LoadTask.doInBackground(SourceFile:48)
09-03 09:13:48.767 11727 11766 E ACRA : at androidx.loader.content.ModernAsyncTask$2.call(SourceFile:141)
09-03 09:13:48.767 11727 11766 E ACRA : at java.util.concurrent.FutureTask.run(FutureTask.java:266)
09-03 09:13:48.767 11727 11766 E ACRA : ... 3 more
09-03 09:13:48.800 3270 3315 W SurfaceFlinger: Attempting to set client state on removed layer: Splash Screen org.courville.nova#0
09-03 09:13:48.800 3270 3315 W SurfaceFlinger: Attempting to destroy on removed layer: Splash Screen org.courville.nova#0
09-03 09:13:48.818 11727 11816 W ACRA :
09-03 09:13:48.818 11727 11816 W ACRA : org.acra.collector.CollectorException: Error while retrieving BUILD_CONFIG data:org.courville.nova.BuildConfig
09-03 09:13:48.818 11727 11816 W ACRA : at org.acra.collector.BaseReportFieldCollector.collect(SourceFile:77)
09-03 09:13:48.818 11727 11816 W ACRA : at org.acra.data.CrashReportDataFactory.lambda$createCrashData$1(SourceFile:88)
09-03 09:13:48.818 11727 11816 W ACRA : at org.acra.data.CrashReportDataFactory.lambda$createCrashData$1$CrashReportDataFactory(Unknown Source:0)
09-03 09:13:48.818 11727 11816 W ACRA : at org.acra.data.-$$Lambda$CrashReportDataFactory$sMwbO3cuC0ZR-WYR0HSToX6ERFQ.run(Unknown Source:8)
09-03 09:13:48.818 11727 11816 W ACRA : at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458)
09-03 09:13:48.818 11727 11816 W ACRA : at java.util.concurrent.FutureTask.run(FutureTask.java:266)
09-03 09:13:48.818 11727 11816 W ACRA : at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
09-03 09:13:48.818 11727 11816 W ACRA : at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
09-03 09:13:48.818 11727 11816 W ACRA : at java.lang.Thread.run(Thread.java:764)
09-03 09:13:48.818 11727 11816 W ACRA : Caused by: java.lang.ClassNotFoundException: org.courville.nova.BuildConfig
09-03 09:13:48.818 11727 11816 W ACRA : at java.lang.Class.classForName(Native Method)
09-03 09:13:48.818 11727 11816 W ACRA : at java.lang.Class.forName(Class.java:453)
09-03 09:13:48.818 11727 11816 W ACRA : at java.lang.Class.forName(Class.java:378)
09-03 09:13:48.818 11727 11816 W ACRA : at org.acra.collector.ReflectionCollector.getBuildConfigClass(SourceFile:142)
09-03 09:13:48.818 11727 11816 W ACRA : at org.acra.collector.ReflectionCollector.collect(SourceFile:65)
09-03 09:13:48.818 11727 11816 W ACRA : at org.acra.collector.BaseReportFieldCollector.collect(SourceFile:73)
09-03 09:13:48.818 11727 11816 W ACRA : ... 8 more
09-03 09:13:48.818 11727 11816 W ACRA : Caused by: java.lang.ClassNotFoundException: Didn't find class "org.courville.nova.BuildConfig" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/org.courville.nova-1Vxh8DjXyaDTwzFAWyarKg==/base.apk"],nativeLibraryDirectories=[/data/app/org.courville.nova-1Vxh8DjXyaDTwzFAWyarKg==/lib/arm, /data/app/org.courville.nova-1Vxh8DjXyaDTwzFAWyarKg==/base.apk!/lib/armeabi-v7a, /system/lib, /product/lib]]
09-03 09:13:48.818 11727 11816 W ACRA : at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
09-03 09:13:48.818 11727 11816 W ACRA : at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
09-03 09:13:48.818 11727 11816 W ACRA : at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
09-03 09:13:48.818 11727 11816 W ACRA : ... 14 more
Thx this part helps:
09-03 09:13:48.759 11727 11766 E SQLiteLog: (1) trigger show_delete already exists
09-03 09:13:48.759 11727 11766 E SQLiteLog: (11) database corruption at line 117820 of [68b898381a]
09-03 09:13:48.762 11727 11766 E SQLiteLog: (11) statement aborts at 11: [CREATE TRIGGER show_delete AFTER DELETE ON show BEGIN INSERT INTO delete_files(name) VALUES(OLD.cover_show);END] malformed database schema (show_delete) - trigger show_delete already e
@ldsz, one thing that would help me is that you send me via email (software at courville dot org) your media.db that you can dump on storage if you click multiple times in settings on "force software decoding" (it will enable some advanced options) and then click on "export media database". The media.db will be on /sdcard/org.courville.nova-media.db I could see where the db corruption is.
Could you please test this test apk to be sure that there has not been any issue on the release process? https://drive.google.com/file/d/1da85HKrlK5BkZ968XFgBrv0rQRG3it6x/view?usp=sharing And if it does not work clear nova app storage data.
OK this does not help and crash seems to be in:
db.execSQL(EPISODE_DELETE_TRIGGER_DROP);
db.execSQL(SHOW_DELETE_TRIGGER_DROP);
db.execSQL(MOVIE_DELETE_TRIGGER_DROP);
Thus let's try out instead cf. https://sqlite.org/forum/forumpost/157dc791df
db.execSQL("pragma writable_schema = ON");
db.execSQL("delete from sqlite_master where name = 'movie_delete'");
db.execSQL("delete from sqlite_master where name = 'show_delete'");
db.execSQL("delete from sqlite_master where name = 'episode_delete'");
db.execSQL("pragma writable_schema = OFF");
Resulting apk for test: https://drive.google.com/file/d/15YEvvIiFfpKwkKfSkGEfR-N88GrvFXFB/view?usp=sharing
Update: I am able now to reproduce the issue on one device. Previous fix KO.
This one is working for me :)
To be on the "safe" side could @ldsz @HDGuy test this apk that should do the trick (same link new version): https://drive.google.com/file/d/15YEvvIiFfpKwkKfSkGEfR-N88GrvFXFB/view?usp=sharing Thanks again for your testing.
This build works if I update from the previous one but not if I uninstall Nova first...
The crash happens in the database scheme upgrade. If you update the previous apk that has already performed the scheme upgrade it will of course not crash. But it means that you reproduce the crash on your side when installing the app then still undergoing the db scheme update. Bug is thus somehow random and not fixed.
That means the previous build can perform the db upgrade but not the last one. At least for me.
Did a fresh install of the 2nd build you posted, still crashed.
Same here on VipeOS , Android 7.1.2 , arm64. Nova v6.0.11
Yet another build to test please: Video-universal-API_21+-release-TEST1.apk Since the bug is not systematic, my confidence level in the fix will increase with the number of users having the crash fixed. Thanks for the collective help.
Yet another build to test please: Video-universal-API_21+-release-TEST1.apk Since the bug is not systematic, my confidence level in the fix will increase with the number of users having the crash fixed. Thanks for the collective help.
That fixes it for me on Chromecast with Google TV.
Yet another build to test please: Video-universal-API_21+-release-TEST1.apk Since the bug is not systematic, my confidence level in the fix will increase with the number of users having the crash fixed. Thanks for the collective help.
OK, so on my Shield it works but I already had the last release installed. I'm not seeing movie sets, do I need to rescrape everything for movie sets to work? If so then I will do a fresh install to see if it crashes or not.
Also, I assume it installs the 64bit arm release on the Shield automatically in this build?
Excellent work BTW. Really looking forward to the day when ExoPlayer is integrated, that will make a big difference, especially on the Shield. Probably the most stable of all the video players+Dolby Vision support. I don't use Kodi for playback on the Shield anymore because it micro-stutters like crazy (even with the proper refresh rate), and Nova is rock solid. I use JustPlayer (ExoPlayer based) for Dolby Vision rip playback.
@HDGuy, I added some migration instruction in the release notes to support movie collections (see https://github.com/nova-video-player/aos-AVP/releases/tag/v6.0.14). I would recommend a fresh install since I switched to tmdb for TV shows now instead of tvdb. We still need to add proper DV support indeed. ExoPlayer is for after proper API30 migration since it depends on it and we need to get ScopedStorage properly implemented...
What is the difference between the universal and the standard arm/arm64 releases? I assume it just includes both builds and installs the correct one?
Found a few more bugs-
Did a fresh install of 6.0.14 arm64 and after adding some SMB drives and starting to scrape the selection will automatically always jump to the top row (Movies for me). Making it virtually impossible to use while scraping. It doesn't exhibit that behavior in preferences, only on the main screen (including the far left selection row- it will always jump to "All movies"). When scraping is done it randomly jumps back to the top row for no reason.
I still don't have movie sets. I have all my movies stores in a single directory (no subdirectories) on my NAS. All my movies in series are listed individually under "All Movies" (ie: All the Star Wars movies, all the Robocop movies, etc). I did a clean install, deleted all my .nfo files. Followed all directions. Rescraping all collections did nothing.
Under the "All animations row" it is listing all my moves and animated TV show episodes individually (which isn't good if you have 13 season or even 20 season animated TV shows with hundreds of episodes)- there needs to be just an animated movie category/tv show category/a way to exclude animated TV shows, or to list all animated items and list just the TV show and not
all the episodes individually.
Trakt log-in on the Shield is difficult. Google log-in is broken. You can't see what you type for manual log-in (covered by Android TV virtual keyboard).
Hope this helps- I'll post the bugs as I see them.
Keep up the good work!
This one is working for me :)
What is the difference between the universal and the standard arm/arm64 releases? I assume it just includes both builds and installs the correct one?
universal contains all archs (arm/arm64/x86/x86_64) and installs the right one on the device.
Found a few more bugs-
OK I will look into it and follow it in separate issues. Thanks for the feedback and testing.
Under the "All animations row" it is listing all my moves and animated TV show episodes individually (which isn't good if you have 13 season or even 20 season animated TV shows with hundreds of episodes)- there needs to be just an animated movie category/tv show category/a way to exclude animated TV shows, or to list all animated items and list just the TV show and not all the episodes individually.
See https://github.com/nova-video-player/aos-AVP/issues/471 to follow the resolution.
Did a fresh install of 6.0.14 arm64 and after adding some SMB drives and starting to scrape the selection will automatically always jump to the top row (Movies for me). Making it virtually impossible to use while scraping. It doesn't exhibit that behavior in preferences, only on the main screen (including the far left selection row- it will always jump to "All movies"). When scraping is done it randomly jumps back to the top row for no reason.
Lets follow this issue here https://github.com/nova-video-player/aos-AVP/issues/474
I still don't have movie sets. I have all my movies stores in a single directory (no subdirectories) on my NAS. All my movies in series are listed individually under "All Movies" (ie: All the Star Wars movies, all the Robocop movies, etc). I did a clean install, deleted all my .nfo files. Followed all directions. Rescraping all collections did nothing.
Movie collections are only visible in a specific tile when not using movie row for now. I acknowledge this is a limitation. See https://github.com/nova-video-player/aos-AVP/issues/475 for further discussions.
Ok, for now I guess I won’t list any individual rows.
Just an FYI- I know it’s not a public release but it crashes every time.
6.0.10 exhibited similar behavior if you set it to scan library for new content on launch.