JS Console Logs with checklist plugin in empty tag filter config (freeze and crash):
The error messages here are common. They appear with/without checklist plugin and does not affect normal functionality (I included screenshot of the console log when obsidian is working normally as comparison below)
JS Memory dump with stacktrace
I tried to use Chrome's inspection tool to run a memory trace on Obsidian. I first started obsidian with some tags in the filter, which works fine. I connected the memory trace collector and then deleted all tags. App immediately freezes with one large memory allocation spike (program freezes afterwards with Android's GC repeatedly reporting OOM). I checked the mem snapshot and traces and got the following clues:
Clue 1
For the only allocation spike that took place immediately before the freeze, it seems like checklist allocated a huge string object with some PNG heading, but the content seems to be scrambled or in some binary format, which seems unusual.
Clue 2
I think this is where I made some discoveries. The owner of this string is an Object allocated by checklist as its content. It seems like it's pointing to one of the PNG file in my vault (size 487KB). This doesn't quite feel right as there's no task in a PNG file, and I think checklist shouldn't really need to load a PNG file. I checked the rest of the objects, it looks like it's loading everything in my vault into memory (canvas files, png files, etc.) I guess this is very inefficient, and can potentially cause my OOM. However, my entire vault is only around 150 MB, even if all files are loaded it shouldn't really go all the way to OOM. There might be some other factors here.
JS Console Logs with checklist plugin in non-empty tag filter config (works normally):
The main difference between the two is that, with empty tag filter, since the OOM happens fairly quickly, many plugins are unable to load due to exhausted memory (for example, omnisearch failed to load in empty-tag config but loaded with no problem in with-tag config)
Android Logcat Traces
With empty-tag checklist plugin config, the follow log shows:
2024-05-16 00:24:20.077 9492-9503 md.obsidian md.obsidian I Clamp target GC heap from 379MB to 368MB
2024-05-16 00:24:20.321 9492-9577 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:20.325 9492-9492 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:20.342 9492-9577 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Background for 20.683ms
2024-05-16 00:24:20.342 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:20.342 9492-9492 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Background for 17.137ms
2024-05-16 00:24:20.342 9492-9492 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:20.830 9492-9577 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:20.832 9492-9492 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:20.849 9492-9503 md.obsidian md.obsidian I Clamp target GC heap from 388MB to 368MB
2024-05-16 00:24:20.849 9492-9577 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Background for 18.401ms
2024-05-16 00:24:20.849 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:20.849 9492-9492 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Background for 16.634ms
2024-05-16 00:24:20.849 9492-9492 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:21.075 9492-9577 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:21.093 9492-9503 md.obsidian md.obsidian I Clamp target GC heap from 388MB to 368MB
2024-05-16 00:24:21.093 9492-9577 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Background for 17.999ms
2024-05-16 00:24:21.093 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:21.327 9492-9577 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:21.331 9492-9492 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:21.346 9492-9503 md.obsidian md.obsidian I Clamp target GC heap from 388MB to 368MB
2024-05-16 00:24:21.346 9492-9577 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Background for 18.862ms
2024-05-16 00:24:21.346 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:21.346 9492-9492 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Background for 15.190ms
2024-05-16 00:24:21.346 9492-9492 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:21.579 9492-9577 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:21.602 9492-9503 md.obsidian md.obsidian I Clamp target GC heap from 388MB to 368MB
2024-05-16 00:24:21.602 9492-9577 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Background for 23.101ms
2024-05-16 00:24:21.602 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:21.839 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:21.839 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:21.857 9492-9577 md.obsidian md.obsidian I Clamp target GC heap from 388MB to 368MB
2024-05-16 00:24:21.857 9492-9577 md.obsidian md.obsidian I Alloc concurrent mark compact GC freed 6865198(171MB) AllocSpace objects, 0(0B) LOS objects, 46% free, 196MB/368MB, paused 71us,931us total 18.545ms
2024-05-16 00:24:21.857 9492-9503 md.obsidian md.obsidian I WaitForGcToComplete blocked Background on Alloc for 18.613ms
2024-05-16 00:24:21.926 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:21.926 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:21.936 9492-9577 md.obsidian md.obsidian I Clamp target GC heap from 388MB to 368MB
2024-05-16 00:24:21.936 9492-9577 md.obsidian md.obsidian I Alloc concurrent mark compact GC freed 2019950(50MB) AllocSpace objects, 0(0B) LOS objects, 46% free, 196MB/368MB, paused 64us,639us total 9.170ms
2024-05-16 00:24:21.936 9492-9577 md.obsidian md.obsidian I Forcing collection of SoftReferences for 144MB allocation
2024-05-16 00:24:21.936 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:21.941 9492-9577 md.obsidian md.obsidian I Clamp target GC heap from 388MB to 368MB
2024-05-16 00:24:21.947 9492-9577 md.obsidian md.obsidian W Throwing OutOfMemoryError "Failed to allocate a 150994952 byte allocation with 180231120 free bytes and 171MB until OOM, target footprint 385875968, growth limit 385875968" (VmSize 36207920 kB)
2024-05-16 00:24:22.004 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:22.004 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:22.013 9492-9492 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:24.729 9492-9577 md.obsidian md.obsidian I Clamp target GC heap from 460MB to 368MB
2024-05-16 00:24:24.729 9492-9577 md.obsidian md.obsidian I Alloc concurrent mark compact GC freed 1112431(27MB) AllocSpace objects, 1(72MB) LOS objects, 27% free, 268MB/368MB, paused 70us,1.112ms total 2.724s
2024-05-16 00:24:24.729 9492-9503 md.obsidian md.obsidian I WaitForGcToComplete blocked Background on Alloc for 2.724s
2024-05-16 00:24:24.729 9492-9492 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on HeapTrim for 2.716s
2024-05-16 00:24:24.729 9492-9492 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:24.729 9492-9492 Choreographer md.obsidian I Skipped 326 frames! The application may be doing too much work on its main thread.
2024-05-16 00:24:24.863 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:24.863 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:24.873 9492-9492 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:27.546 9492-9577 md.obsidian md.obsidian I Clamp target GC heap from 460MB to 368MB
2024-05-16 00:24:27.546 9492-9577 md.obsidian md.obsidian I Alloc concurrent mark compact GC freed 3987536(99MB) AllocSpace objects, 0(0B) LOS objects, 27% free, 268MB/368MB, paused 76us,1.496ms total 2.683s
2024-05-16 00:24:27.546 9492-9503 md.obsidian md.obsidian I WaitForGcToComplete blocked Background on Alloc for 2.683s
2024-05-16 00:24:27.547 9492-9492 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Alloc for 2.673s
2024-05-16 00:24:27.547 9492-9492 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:27.547 9492-9492 Choreographer md.obsidian I Skipped 321 frames! The application may be doing too much work on its main thread.
2024-05-16 00:24:27.678 9492-9577 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:27.685 9492-9492 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:30.386 9492-9503 md.obsidian md.obsidian I Clamp target GC heap from 460MB to 368MB
2024-05-16 00:24:30.387 9492-9503 md.obsidian md.obsidian I Background concurrent mark compact GC freed 3990049(99MB) AllocSpace objects, 0(0B) LOS objects, 27% free, 268MB/368MB, paused 89us,1.591ms total 2.708s
2024-05-16 00:24:30.387 9492-9577 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Background for 2.708s
2024-05-16 00:24:30.387 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:30.387 9492-9492 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Background for 2.701s
2024-05-16 00:24:30.387 9492-9492 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:30.387 9492-9492 Choreographer md.obsidian I Skipped 324 frames! The application may be doing too much work on its main thread.
2024-05-16 00:24:30.528 9492-9577 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:30.539 9492-9492 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:33.142 9492-9503 md.obsidian md.obsidian I Clamp target GC heap from 460MB to 368MB
2024-05-16 00:24:33.142 9492-9503 md.obsidian md.obsidian I Background concurrent mark compact GC freed 3990036(99MB) AllocSpace objects, 0(0B) LOS objects, 27% free, 268MB/368MB, paused 84us,1.537ms total 2.614s
2024-05-16 00:24:33.142 9492-9492 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on HeapTrim for 2.603s
2024-05-16 00:24:33.142 9492-9492 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:33.142 9492-9577 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on HeapTrim for 2.614s
2024-05-16 00:24:33.142 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:33.142 9492-9492 Choreographer md.obsidian I Skipped 312 frames! The application may be doing too much work on its main thread.
2024-05-16 00:24:33.284 9492-9577 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:36.122 9492-9503 md.obsidian md.obsidian I Clamp target GC heap from 460MB to 368MB
2024-05-16 00:24:36.122 9492-9503 md.obsidian md.obsidian I Background concurrent mark compact GC freed 3946595(98MB) AllocSpace objects, 12(1000KB) LOS objects, 27% free, 268MB/368MB, paused 93us,1.621ms total 2.837s
2024-05-16 00:24:36.122 9492-9577 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Background for 2.837s
2024-05-16 00:24:36.122 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:36.264 9492-9577 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:36.271 9492-9492 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:38.934 9492-9503 md.obsidian md.obsidian I Clamp target GC heap from 460MB to 368MB
2024-05-16 00:24:38.934 9492-9503 md.obsidian md.obsidian I Background concurrent mark compact GC freed 3984042(99MB) AllocSpace objects, 0(0B) LOS objects, 27% free, 268MB/368MB, paused 70us,1.271ms total 2.669s
2024-05-16 00:24:38.934 9492-9577 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Background for 2.670s
2024-05-16 00:24:38.934 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:38.934 9492-9492 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Background for 2.662s
2024-05-16 00:24:38.934 9492-9492 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:38.934 9492-9492 Choreographer md.obsidian I Skipped 320 frames! The application may be doing too much work on its main thread.
2024-05-16 00:24:39.083 9492-9577 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:39.092 9492-9492 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:41.817 9492-9503 md.obsidian md.obsidian I Clamp target GC heap from 460MB to 368MB
2024-05-16 00:24:41.817 9492-9503 md.obsidian md.obsidian I Background concurrent mark compact GC freed 3987571(99MB) AllocSpace objects, 0(0B) LOS objects, 27% free, 268MB/368MB, paused 102us,1.201ms total 2.734s
2024-05-16 00:24:41.818 9492-9492 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on HeapTrim for 2.725s
2024-05-16 00:24:41.818 9492-9492 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:41.818 9492-9577 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on HeapTrim for 2.734s
2024-05-16 00:24:41.818 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:41.818 9492-9492 Choreographer md.obsidian I Skipped 327 frames! The application may be doing too much work on its main thread.
2024-05-16 00:24:41.965 9492-9577 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:41.970 9492-9492 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:44.669 9492-9503 md.obsidian md.obsidian I Clamp target GC heap from 460MB to 368MB
2024-05-16 00:24:44.669 9492-9503 md.obsidian md.obsidian I Background concurrent mark compact GC freed 3988800(99MB) AllocSpace objects, 0(0B) LOS objects, 27% free, 268MB/368MB, paused 91us,1.535ms total 2.704s
2024-05-16 00:24:44.670 9492-9577 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Background for 2.704s
2024-05-16 00:24:44.670 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:44.670 9492-9492 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Background for 2.700s
2024-05-16 00:24:44.670 9492-9492 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:44.823 9492-9577 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:44.829 9492-9492 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:47.498 9492-9503 md.obsidian md.obsidian I Clamp target GC heap from 460MB to 368MB
2024-05-16 00:24:47.498 9492-9503 md.obsidian md.obsidian I Background concurrent mark compact GC freed 3988818(99MB) AllocSpace objects, 0(0B) LOS objects, 27% free, 268MB/368MB, paused 102us,1.617ms total 2.674s
2024-05-16 00:24:47.499 9492-9577 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Background for 2.675s
2024-05-16 00:24:47.499 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:47.499 9492-9492 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Background for 2.669s
2024-05-16 00:24:47.499 9492-9492 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:47.499 9492-9492 Choreographer md.obsidian I Skipped 321 frames! The application may be doing too much work on its main thread.
2024-05-16 00:24:47.682 9492-9577 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:47.690 9492-9492 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:50.445 9492-9503 md.obsidian md.obsidian I Clamp target GC heap from 460MB to 368MB
2024-05-16 00:24:50.445 9492-9503 md.obsidian md.obsidian I Background concurrent mark compact GC freed 3990143(99MB) AllocSpace objects, 0(0B) LOS objects, 27% free, 268MB/368MB, paused 79us,1.556ms total 2.763s
2024-05-16 00:24:50.445 9492-9492 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on HeapTrim for 2.754s
2024-05-16 00:24:50.445 9492-9492 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:50.445 9492-9577 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on HeapTrim for 2.763s
2024-05-16 00:24:50.445 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:50.445 9492-9492 Choreographer md.obsidian I Skipped 331 frames! The application may be doing too much work on its main thread.
2024-05-16 00:24:50.587 9492-9577 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:50.593 9492-9492 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:53.311 9492-9503 md.obsidian md.obsidian I Clamp target GC heap from 460MB to 368MB
2024-05-16 00:24:53.311 9492-9503 md.obsidian md.obsidian I Background concurrent mark compact GC freed 3990041(99MB) AllocSpace objects, 0(0B) LOS objects, 27% free, 268MB/368MB, paused 108us,1.588ms total 2.724s
2024-05-16 00:24:53.312 9492-9577 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Background for 2.724s
2024-05-16 00:24:53.312 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:53.312 9492-9492 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Background for 2.718s
2024-05-16 00:24:53.312 9492-9492 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:53.472 9492-9577 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:53.478 9492-9492 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:56.199 9492-9503 md.obsidian md.obsidian I Clamp target GC heap from 460MB to 368MB
2024-05-16 00:24:56.199 9492-9503 md.obsidian md.obsidian I Background concurrent mark compact GC freed 3990038(99MB) AllocSpace objects, 0(0B) LOS objects, 27% free, 268MB/368MB, paused 94us,1.574ms total 2.727s
2024-05-16 00:24:56.200 9492-9577 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Background for 2.727s
2024-05-16 00:24:56.200 9492-9577 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:56.200 9492-9492 md.obsidian md.obsidian I WaitForGcToComplete blocked Alloc on Background for 2.721s
2024-05-16 00:24:56.200 9492-9492 md.obsidian md.obsidian I Starting a blocking GC Alloc
2024-05-16 00:24:56.200 9492-9492 Choreographer md.obsidian I Skipped 327 frames! The application may be doing too much work on its main thread.
2024-05-16 00:24:56.332 9492-9577 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:56.339 9492-9492 md.obsidian md.obsidian I Waiting for a blocking GC Alloc
2024-05-16 00:24:59.122 9492-9503 md.obsidian md.obsidian I Clamp target GC heap from 460MB to 368MB
Basically, once checklist plugin started loading, something (either the plugin or obsidian or else) started to allocate memory non-stop on the main thread, leading to frozen UI (as reported by Choreographer and GC). This log piece is not complete as it repeats for quite a while, during which obsidian is completely frozen. Eventually, the following exception is thrown:
2024-05-16 00:25:25.429 9492-9577 AndroidRuntime md.obsidian E FATAL EXCEPTION: CapacitorPlugins (Ask Gemini)
Process: md.obsidian, PID: 9492
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.getcapacitor.Bridge.lambda$callPluginMethod$0(Bridge.java:806)
at com.getcapacitor.Bridge.$r8$lambda$ehFTi5f4HhVNFKTbCKAYDkpQYRA(Unknown Source:0)
at com.getcapacitor.Bridge$$ExternalSyntheticLambda3.run(Unknown Source:8)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at com.getcapacitor.PluginHandle.invoke(PluginHandle.java:138)
at com.getcapacitor.Bridge.lambda$callPluginMethod$0(Bridge.java:797)
at com.getcapacitor.Bridge.$r8$lambda$ehFTi5f4HhVNFKTbCKAYDkpQYRA(Unknown Source:0)
at com.getcapacitor.Bridge$$ExternalSyntheticLambda3.run(Unknown Source:8)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: java.lang.OutOfMemoryError: Failed to allocate a 301989896 byte allocation with 104471504 free bytes and 99MB until OOM, target footprint 385875968, growth limit 385875968
at java.util.Arrays.copyOf(Arrays.java:3578)
at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:177)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:543)
at java.lang.StringBuilder.append(StringBuilder.java:186)
at org.json.JSONStringer.string(JSONStringer.java:352)
at org.json.JSONStringer.value(JSONStringer.java:261)
at org.json.JSONObject.writeTo(JSONObject.java:734)
at org.json.JSONStringer.value(JSONStringer.java:246)
at org.json.JSONObject.writeTo(JSONObject.java:734)
at org.json.JSONObject.toString(JSONObject.java:702)
at com.getcapacitor.PluginResult.toString(PluginResult.java:67)
at com.getcapacitor.MessageHandler.sendResponseMessage(MessageHandler.java:126)
at com.getcapacitor.PluginCall.resolve(PluginCall.java:74)
at com.capacitorjs.plugins.filesystem.FilesystemPlugin.readFile(FilesystemPlugin.java:119)
at java.lang.reflect.Method.invoke(Native Method)
at com.getcapacitor.PluginHandle.invoke(PluginHandle.java:138)
at com.getcapacitor.Bridge.lambda$callPluginMethod$0(Bridge.java:797)
at com.getcapacitor.Bridge.$r8$lambda$ehFTi5f4HhVNFKTbCKAYDkpQYRA(Unknown Source:0)
at com.getcapacitor.Bridge$$ExternalSyntheticLambda3.run(Unknown Source:8)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.os.HandlerThread.run(HandlerThread.java:67)
Which is simply the operating system killing obsidian due to OOM.
Steps to reproduce
Note: this only happens on my Android obsidian app. On the PC obsidian it works as-intended. Note 2: This is a stably reproducible problem on my phone
Expected Result
Actual Result
My obsidian setup
Android obsidian version 1.5.12(134)
Plugin list (I have many plugins, but they worked fine)
My hardware and OS
Sony Xperia 1V Android 14 12GB RAM
Related issues
Found some potentially related issues
188 #183
JS console logs
JS Console Logs with checklist plugin in empty tag filter config (freeze and crash):
The error messages here are common. They appear with/without checklist plugin and does not affect normal functionality (I included screenshot of the console log when obsidian is working normally as comparison below)
JS Memory dump with stacktrace
I tried to use Chrome's inspection tool to run a memory trace on Obsidian. I first started obsidian with some tags in the filter, which works fine. I connected the memory trace collector and then deleted all tags. App immediately freezes with one large memory allocation spike (program freezes afterwards with Android's GC repeatedly reporting OOM). I checked the mem snapshot and traces and got the following clues:
Clue 1
For the only allocation spike that took place immediately before the freeze, it seems like checklist allocated a huge string object with some PNG heading, but the content seems to be scrambled or in some binary format, which seems unusual.
Clue 2
I think this is where I made some discoveries. The owner of this string is an Object allocated by checklist as its content. It seems like it's pointing to one of the PNG file in my vault (size 487KB). This doesn't quite feel right as there's no task in a PNG file, and I think checklist shouldn't really need to load a PNG file. I checked the rest of the objects, it looks like it's loading everything in my vault into memory (canvas files, png files, etc.) I guess this is very inefficient, and can potentially cause my OOM. However, my entire vault is only around 150 MB, even if all files are loaded it shouldn't really go all the way to OOM. There might be some other factors here.
JS Console Logs with checklist plugin in non-empty tag filter config (works normally):
The main difference between the two is that, with empty tag filter, since the OOM happens fairly quickly, many plugins are unable to load due to exhausted memory (for example, omnisearch failed to load in empty-tag config but loaded with no problem in with-tag config)
Android Logcat Traces
With empty-tag checklist plugin config, the follow log shows:
Basically, once checklist plugin started loading, something (either the plugin or obsidian or else) started to allocate memory non-stop on the main thread, leading to frozen UI (as reported by Choreographer and GC). This log piece is not complete as it repeats for quite a while, during which obsidian is completely frozen. Eventually, the following exception is thrown:
Which is simply the operating system killing obsidian due to OOM.