nextcloud / android

📱 Nextcloud Android app
https://play.google.com/store/apps/details?id=com.nextcloud.client
GNU General Public License v2.0
4.32k stars 1.78k forks source link

Android Client crash while upload and don't recover: android.database.sqlite.SQLiteBlobTooBigException #10150

Open datavizzard opened 2 years ago

datavizzard commented 2 years ago

Steps to reproduce

  1. Open Android nextcloud client
  2. Crash
  3. Start at 1.

Expected behaviour

Actual behaviour

**** CAUSE OF ERROR ****

android.database.sqlite.SQLiteBlobTooBigException: Row too big to fit into CursorWindow requiredPos=0, totalRows=1
    at android.database.sqlite.SQLiteConnection.nativeExecuteForCursorWindow(Native Method)
    at android.database.sqlite.SQLiteConnection.executeForCursorWindow(SQLiteConnection.java:1003)
    at android.database.sqlite.SQLiteSession.executeForCursorWindow(SQLiteSession.java:838)
    at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:62)
    at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:145)
    at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:132)
    at android.content.ContentResolver.query(ContentResolver.java:1238)
    at android.content.ContentResolver.query(ContentResolver.java:1151)
    at android.content.ContentResolver.query(ContentResolver.java:1107)
    at com.owncloud.android.datamodel.FileDataStorageManager.getFileCursorForValue(FileDataStorageManager.java:956)
    at com.owncloud.android.datamodel.FileDataStorageManager.getFileByPath(FileDataStorageManager.java:121)
    at com.owncloud.android.datamodel.FileDataStorageManager.getFileByEncryptedRemotePath(FileDataStorageManager.java:111)
    at com.owncloud.android.datamodel.FileDataStorageManager.getFileByPath(FileDataStorageManager.java:107)
    at com.owncloud.android.ui.activity.FileDisplayActivity.onStart(FileDisplayActivity.java:2411)
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1467)
    at android.app.Activity.performStart(Activity.java:8079)
    at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3732)
    at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
    at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
    at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2253)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loopOnce(Looper.java:201)
    at android.os.Looper.loop(Looper.java:288)
    at android.app.ActivityThread.main(ActivityThread.java:7870)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)

**** APP INFORMATION **** ID: com.nextcloud.client Version: 30190190 Build flavor: generic

**** DEVICE INFORMATION **** Brand: google Device: bramble Model: Pixel 4a (5G) Id: SP2A.220405.003 Product: bramble

**** FIRMWARE **** SDK: 32 Release: 12 Incremental: 8210211

datavizzard commented 1 year ago

Just tried again, problem persists. Independent of the version

joshtrichards commented 1 year ago

Looks similar, but not entirely the same as #9693.

MWillimz commented 10 months ago

I have got the exact same one after updating to android 14. Unable to get any version running on this tablet. Works fine on my phone on android 13.

Cause of error

Exception in thread "main" java.lang.RuntimeException: Unable to resume activity {com.nextcloud.client/com.owncloud.android.ui.activity.FileDisplayActivity}: android.database.sqlite.SQLiteBlobTooBigException: Row too big to fit into CursorWindow requiredPos=17, totalRows=18
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:5426)
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:5507)
    at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:229)
    at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:205)
    at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:177)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:98)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2685)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loopOnce(Looper.java:230)
    at android.os.Looper.loop(Looper.java:319)
    at android.app.ActivityThread.main(ActivityThread.java:8913)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
Caused by: Exception in thread "main" android.database.sqlite.SQLiteBlobTooBigException: Row too big to fit into CursorWindow requiredPos=17, totalRows=18
    at android.database.sqlite.SQLiteConnection.nativeExecuteForCursorWindow(Native Method)
    at android.database.sqlite.SQLiteConnection.executeForCursorWindow(SQLiteConnection.java:1362)
    at android.database.sqlite.SQLiteSession.executeForCursorWindow(SQLiteSession.java:838)
    at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:62)
    at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:165)
    at android.database.sqlite.SQLiteCursor.onMove(SQLiteCursor.java:126)
    at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:255)
    at android.database.AbstractCursor.moveToNext(AbstractCursor.java:287)
    at com.nextcloud.client.database.dao.FileDao_Impl.getFolderContent(FileDao_Impl.java:1897)
    at com.owncloud.android.datamodel.FileDataStorageManager.getFolderContent(FileDataStorageManager.java:848)
    at com.owncloud.android.datamodel.FileDataStorageManager.getFolderContent(FileDataStorageManager.java:186)
    at com.owncloud.android.ui.adapter.OCFileListAdapter.swapDirectory(OCFileListAdapter.java:690)
    at com.owncloud.android.ui.fragment.OCFileListFragment.listDirectory(OCFileListFragment.java:1331)
    at com.owncloud.android.ui.fragment.OCFileListFragment.listDirectory(OCFileListFragment.java:1296)
    at com.owncloud.android.ui.fragment.OCFileListFragment.listDirectory(OCFileListFragment.java:1285)
    at com.owncloud.android.ui.fragment.OCFileListFragment.onActivityCreated(OCFileListFragment.java:428)
    at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:3156)
    at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:619)
    at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:275)
    at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1943)
    at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1839)
    at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1782)
    at androidx.fragment.app.FragmentController.execPendingActions(FragmentController.java:495)
    at androidx.fragment.app.FragmentActivity.onResume(FragmentActivity.java:311)
    at com.owncloud.android.ui.activity.BaseActivity.onResume(BaseActivity.java:91)
    at com.owncloud.android.ui.activity.DrawerActivity.onResume(DrawerActivity.java:1042)
    at com.owncloud.android.ui.activity.FileActivity.onResume(FileActivity.java:253)
    at com.owncloud.android.ui.activity.FileDisplayActivity.onResume(FileDisplayActivity.java:1089)
    at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1603)
    at android.app.Activity.performResume(Activity.java:9119)
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:5399)
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:5507)
    at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:229)
    at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:205)
    at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:177)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:98)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2685)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loopOnce(Looper.java:230)
    at android.os.Looper.loop(Looper.java:319)
    at android.app.ActivityThread.main(ActivityThread.java:8913)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)

App information

Device information

Firmware

datavizzard commented 10 months ago

I still have the same problem with Android 14 and the hardware mentioned at the beginning

datavizzard commented 1 day ago

Update 2 Years later: Problem still exists on Google Pixel 8a Android 14

Cause of error

Exception in thread "Thread-15" android.database.sqlite.SQLiteBlobTooBigException: Row too big to fit into CursorWindow requiredPos=0, totalRows=1
    at android.database.sqlite.SQLiteConnection.nativeExecuteForCursorWindow(Native Method)
    at android.database.sqlite.SQLiteConnection.executeForCursorWindow(SQLiteConnection.java:1037)
    at android.database.sqlite.SQLiteSession.executeForCursorWindow(SQLiteSession.java:862)
    at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:62)
    at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:145)
    at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:132)
    at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:252)
    at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:291)
    at com.nextcloud.client.database.dao.FileDao_Impl.getFileByEncryptedRemotePath(FileDao_Impl.java:468)
    at com.owncloud.android.datamodel.FileDataStorageManager.fileExists(FileDataStorageManager.java:177)
    at com.owncloud.android.datamodel.FileDataStorageManager.saveFile(FileDataStorageManager.java:276)
    at com.owncloud.android.operations.RefreshFolderOperation.run(RefreshFolderOperation.java:260)
    at com.owncloud.android.lib.common.operations.RemoteOperation.run(RemoteOperation.java:387)
    at java.lang.Thread.run(Thread.java:1012)

App information

Device information

Firmware