Join Nostr
2026-04-19 16:40:10 UTC

J. R. DePriest :verified_trans: :donor: :Moopsy: :EA DATA. SF: on Nostr: Lucas @Moshidon 🇺🇦 🇵🇸 Hello there. I'm thankful that you are continuing ...



Hello there. I'm thankful that you are continuing to keep what was Megalodon alive. I've tried other Mastodon client and always come back to this one.

But it crashes a couple times a week.

I get random-seeming crashes that I can't easily reproduce and the logs just look like a memory leak.

Is it worth me when opening an official bug report when I can't tell you anything about why it crashes?

I used to think it was related to previewing web pages with the built-in browser since my phone is set to use IronFox instead of Chrome or WebView. But I changed the setting to always launch in the full browser and it crashed again not long after.

I'm running it on a Google Pixel 7 Pro. I just rebooted to apply a security update this morning so I can't easily provide the OS version from last night's crash.<code>2.3.0+fork.110.moshinda-play (110)<br>2026-04-19T03:00:58.712Z<br><br>java.lang.OutOfMemoryError: Failed to allocate a 144 byte allocation with 4075008 free bytes and 3979KB until OOM, target footprint 536870912, growth limit 536870912; giving up on allocation because &lt;1% of heap free after GC.<br> at java.lang.StringFactory.newStringFromBytes(Native Method)<br> at java.lang.StringLatin1.newString(StringLatin1.java:770)<br> at java.lang.StringBuilder.toString(StringBuilder.java:478)<br> at me.grishka.appkit.imageloader.requests.UrlImageLoaderRequest.&lt;init&gt;(UrlImageLoaderRequest.java:27)<br> at me.grishka.appkit.imageloader.requests.UrlImageLoaderRequest.&lt;init&gt;(UrlImageLoaderRequest.java:36)<br> at me.grishka.appkit.imageloader.requests.UrlImageLoaderRequest.&lt;init&gt;(UrlImageLoaderRequest.java:44)<br> at org.joinmastodon.android.ui.CustomEmojiPopupKeyboard$SingleCategoryAdapter.lambda$new$0(CustomEmojiPopupKeyboard.java:242)<br> at org.joinmastodon.android.ui.CustomEmojiPopupKeyboard$SingleCategoryAdapter.$r8$lambda$MVSWsH80noB7_zYH7nOGF_m6r4Q(CustomEmojiPopupKeyboard.java:0)<br> at org.joinmastodon.android.ui.CustomEmojiPopupKeyboard$SingleCategoryAdapter$$ExternalSyntheticLambda0.apply(R8$$SyntheticClass:0)<br> at j$.util.stream.o.accept(SourceFile:195)<br> at j$.util.a.forEachRemaining(SourceFile:720)<br> at j$.util.stream.a.t(SourceFile:484)<br> at j$.util.stream.a.K(SourceFile:474)<br> at j$.util.stream.x1.b(SourceFile:913)<br> at j$.util.stream.a.w(SourceFile:234)<br> at j$.util.stream.f2.collect(SourceFile:578)<br> at org.joinmastodon.android.ui.CustomEmojiPopupKeyboard$SingleCategoryAdapter.&lt;init&gt;(CustomEmojiPopupKeyboard.java:242)<br> at org.joinmastodon.android.ui.CustomEmojiPopupKeyboard.onCreateView(CustomEmojiPopupKeyboard.java:119)<br> at org.joinmastodon.android.ui.PopupKeyboard.ensureView(PopupKeyboard.java:41)<br> at org.joinmastodon.android.ui.PopupKeyboard.getView(PopupKeyboard.java:47)<br> at org.joinmastodon.android.ui.displayitems.EmojiReactionsStatusDisplayItem$Holder.onBind(EmojiReactionsStatusDisplayItem.java:207)<br> at org.joinmastodon.android.ui.displayitems.EmojiReactionsStatusDisplayItem$Holder.onBind(EmojiReactionsStatusDisplayItem.java:159)<br> at me.grishka.appkit.utils.BindableViewHolder.bind(BindableViewHolder.java:33)<br> at org.joinmastodon.android.fragments.BaseStatusListFragment$DisplayItemsAdapter.onBindViewHolder(BaseStatusListFragment.java:1226)<br> at org.joinmastodon.android.fragments.BaseStatusListFragment$DisplayItemsAdapter.onBindViewHolder(BaseStatusListFragment.java:1210)<br> at me.grishka.appkit.views.UsableRecyclerView$FooterRecyclerAdapter.onBindViewHolder(UsableRecyclerView.java:433)<br> at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7256)<br> at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7339)<br> at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6197)<br> at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6463)<br> at androidx.recyclerview.widget.GapWorker.prefetchPositionWithDeadline(GapWorker.java:287)<br> at androidx.recyclerview.widget.GapWorker.flushTaskWithDeadline(GapWorker.java:344)<br> at androidx.recyclerview.widget.GapWorker.flushTasksWithDeadline(GapWorker.java:360)<br> at androidx.recyclerview.widget.GapWorker.prefetch(GapWorker.java:367)<br> at androidx.recyclerview.widget.GapWorker.run(GapWorker.java:398)<br> at android.os.Handler.handleCallback(Handler.java:1095)<br> at android.os.Handler.dispatchMessageImpl(Handler.java:135)<br> at android.os.Handler.dispatchMessage(Handler.java:125)<br> at android.os.Looper.loopOnce(Looper.java:269)<br> at android.os.Looper.loop(Looper.java:367)<br> at android.app.ActivityThread.main(ActivityThread.java:9333)<br> at java.lang.reflect.Method.invoke(Native Method)<br> at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:566)<br> at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:929)<br></code>