What happened?
Device : Samsung S25 (SM-S9310)
Android : 16 (API 36) / One UI 8.5
App version : 7.11.2
What happened :
Pasted text into a note, app crashed with OOM error. After restart, all notes are gone but app data still shows 12.51MB used.
Request :
If possible, please consider adding a SQLITE recovery mechanism on startup when SQLITE_CORRUPT is detected, so the corrupted database can be automatically repaired and notes restored.
The app data still shows 12.51MB used after the crash, which suggests the corrupted database file is still present on the device. I have not cleared app data. If a SQLite recovery mechanism could be added to automatically repair corrupted databases on startup, there is a chance my notes could still be recovered.
App Version
v7.11.2
Android Version (API Level)
16 (API 36)
(Optional) Relevant log output
[Start]
java.lang.OutOfMemoryError: Failed to allocate a 40 byte allocation with 2406976 free bytes and 2350KB until OOM, target footprint 268435456, growth limit 268435456; giving up on allocation because <1% of heap free after GC.
at com.philkes.notallyx.presentation.UiExtensionsKt.setControlsColorForAllViews(SourceFile:84)
at com.philkes.notallyx.presentation.UiExtensionsKt.setControlsColorForAllViews(SourceFile:33)
at com.philkes.notallyx.presentation.UiExtensionsKt.setControlsColorForAllViews(SourceFile:33)
at com.philkes.notallyx.presentation.UiExtensionsKt.setControlsColorForAllViews(SourceFile:33)
at com.philkes.notallyx.presentation.UiExtensionsKt.setControlsContrastColorForAllViews(SourceFile:19)
at com.philkes.notallyx.presentation.view.main.BaseNoteAdapter.onBindViewHolder(SourceFile:163)
at com.philkes.notallyx.presentation.view.main.BaseNoteAdapter.onBindViewHolder(SourceFile:171)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(SourceFile:1391)
at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(SourceFile:63)
at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(SourceFile:1)
at androidx.recyclerview.widget.LinearLayoutManager.fill(SourceFile:49)
at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(SourceFile:808)
at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(SourceFile:74)
at androidx.recyclerview.widget.RecyclerView.onMeasure(SourceFile:64)
at android.view.View.measure(View.java:29816)
at androidx.constraintlayout.widget.ConstraintLayout$Measurer.measure(SourceFile:411)
at com.google.crypto.tink.KeysetHandle.measure(SourceFile:93)
at androidx.constraintlayout.widget.ConstraintLayout.resolveSystem(SourceFile:1198)
at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(SourceFile:1557)
at android.view.View.measure(View.java:29816)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7415)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:207)
at android.view.View.measure(View.java:29816)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7415)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:207)
at android.view.View.measure(View.java:29816)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:749)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:495)
at android.view.View.measure(View.java:29816)
at androidx.drawerlayout.widget.DrawerLayout.onMeasure(SourceFile:248)
at android.view.View.measure(View.java:29816)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7415)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:207)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(SourceFile:160)
at android.view.View.measure(View.java:29816)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7415)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1608)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:878)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:29816)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7415)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:207)
at android.view.View.measure(View.java:29816)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7415)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1608)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:878)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:29816)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7415)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:207)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:1031)
at android.view.View.measure(View.java:29816)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:6084)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:4260)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:4662)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:3924)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:12903)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1901)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1910)
at android.view.Choreographer.doCallbacks(Choreographer.java:1367)
at android.view.Choreographer.doFrame(Choreographer.java:1292)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1870)
at android.os.Handler.handleCallback(Handler.java:995)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loopOnce(Looper.java:273)
at android.os.Looper.loop(Looper.java:363)
at android.app.ActivityThread.main(ActivityThread.java:10060)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:632)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
Version code : 7600
Version name : 7.6.0
Model : SM-S9310
Device : pa1q
Brand : samsung
Manufacturer : samsung
Android : 36
Time : 2026年1月1日 上午2:56:47
[End]
2026-02-03 06:44:10 - DataSchemaMigrations - Running migration 1: Moving attachments to private folder
2026-02-03 06:44:11 - DataSchemaMigrations - Running migration 2: Splitting notes exceeding the body size limit (limit: 393216 characters)
2026-02-03 06:44:11 - DataSchemaMigrations - Migration 2 finished. Processed 0 oversized notes. Repaired rows: 0
[Start]
java.lang.RuntimeException: Exception while computing database live data.
at androidx.room.RoomTrackingLiveData$$ExternalSyntheticLambda0.run(SourceFile:139)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1100)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:1572)
Caused by: android.database.sqlite.SQLiteDatabaseCorruptException: database disk image is malformed (code 11 SQLITE_CORRUPT[11])
at android.database.sqlite.SQLiteConnection.nativeExecuteForCursorWindow(Native Method)
at android.database.sqlite.SQLiteConnection.executeForCursorWindow(SQLiteConnection.java:1400)
at android.database.sqlite.SQLiteSession.executeForCursorWindow(SQLiteSession.java:873)
at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:62)
at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:157)
at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:144)
at com.philkes.notallyx.data.dao.BaseNoteDao_Impl$getFrom$1.call(SourceFile:167)
at androidx.room.RoomTrackingLiveData$$ExternalSyntheticLambda0.run(SourceFile:126)
... 3 more
Version code : 71120
Version name : 7.11.2
Model : SM-S9310
Device : pa1q
Brand : samsung
Manufacturer : samsung
Android : 36
Time : 2026年6月14日 下午6:21:33
[End]
What happened?
Device : Samsung S25 (SM-S9310)
Android : 16 (API 36) / One UI 8.5
App version : 7.11.2
What happened :
Pasted text into a note, app crashed with OOM error. After restart, all notes are gone but app data still shows 12.51MB used.
Request :
If possible, please consider adding a SQLITE recovery mechanism on startup when SQLITE_CORRUPT is detected, so the corrupted database can be automatically repaired and notes restored.
The app data still shows 12.51MB used after the crash, which suggests the corrupted database file is still present on the device. I have not cleared app data. If a SQLite recovery mechanism could be added to automatically repair corrupted databases on startup, there is a chance my notes could still be recovered.
App Version
v7.11.2
Android Version (API Level)
16 (API 36)
(Optional) Relevant log output