Hendroid icon indicating copy to clipboard operation
Hendroid copied to clipboard

Clicking Errors tab crashes app consistently

Open Drakonas opened this issue 2 years ago • 2 comments

Hendroid Version: 1.15.14 (187)

Device/Android Version: Samsung A7/SM-T500 Android 11

Issue details / Repro steps: Clicking the "errors" tab in the queue menu immediately crashes Hendroid, even after a complete tablet restart.

Steps taken: Added a bunch of exhentai (reached a total of almost 300) in a period of a couple days, mostly the last day. Eventually exhentai temporarily IP banned for 1 hour due to "excessive page loads". Waited 1 hour, then to be safe enabled Mullvad VPN to a different IP. Moved all entries from the error tab to queue (error tab still loaded fine at this time). I left to do things, later to find the queue empty and 18 marked next to "errors". Clicking on the "errors" tab from this point forward produces the issue, even when turning off the VPN, clearing app caches with the in-app function, and restarting the tablet.

Stack trace / LogCat:

latest-crash log : begin
Hentoid ver: 1.15.14 (187)
API: 30
Device: SM-T500
Start : 2021-11-28T07:24:41.979Z
End : 2021-11-28T07:24:41.979Z (00:00)
-----
Attempt to invoke virtual method 'boolean java.lang.String.isEmpty()' on a null object reference
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.isEmpty()' on a null object reference
	at me.devsaki.hentoid.database.domains.ImageFile.getUsableUri(ImageFile.java:302)
	at me.devsaki.hentoid.viewholders.ContentItem$ContentViewHolder.attachCover(ContentItem.java:391)
	at me.devsaki.hentoid.viewholders.ContentItem$ContentViewHolder.bindView(ContentItem.java:345)
	at me.devsaki.hentoid.viewholders.ContentItem$ContentViewHolder.bindView(ContentItem.java:216)
	at com.mikepenz.fastadapter.listeners.OnBindViewHolderListenerImpl.onBindViewHolder(OnBindViewHolderListenerImpl.kt:22)
	at com.mikepenz.fastadapter.FastAdapter.onBindViewHolder(FastAdapter.kt:397)
	at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7337)
	at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6194)
	at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6460)
	at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6300)
	at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6296)
	at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2330)
	at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1631)
	at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1591)
	at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:668)
	at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4309)
	at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4012)
	at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4578)
	at android.view.View.layout(View.java:24481)
	at android.view.ViewGroup.layout(ViewGroup.java:7383)
	at androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1873)
	at android.view.View.layout(View.java:24481)
	at android.view.ViewGroup.layout(ViewGroup.java:7383)
	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
	at android.view.View.layout(View.java:24481)
	at android.view.ViewGroup.layout(ViewGroup.java:7383)
	at androidx.recyclerview.widget.RecyclerView$LayoutManager.layoutDecoratedWithMargins(RecyclerView.java:9878)
	at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1689)
	at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1591)
	at androidx.recyclerview.widget.LinearLayoutManager.scrollBy(LinearLayoutManager.java:1395)
	at androidx.recyclerview.widget.LinearLayoutManager.scrollHorizontallyBy(LinearLayoutManager.java:1124)
	at androidx.recyclerview.widget.RecyclerView.scrollStep(RecyclerView.java:1969)
	at androidx.recyclerview.widget.RecyclerView$SmoothScroller.onAnimation(RecyclerView.java:12316)
	at androidx.recyclerview.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:5564)
	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1010)
	at android.view.Choreographer.doCallbacks(Choreographer.java:809)
	at android.view.Choreographer.doFrame(Choreographer.java:740)
	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:995)
	at android.os.Handler.handleCallback(Handler.java:938)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loop(Looper.java:247)
	at android.app.ActivityThread.main(ActivityThread.java:8656)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)

latest-crash log : end

20211128_030020

Drakonas avatar Nov 28 '21 08:11 Drakonas

Thanks for the report! Have you tried the upstream app? (https://github.com/avluis/Hentoid) If the error occurs there as well then you should report it there so even more users can benefit from it.

Nonononoki avatar Dec 04 '21 17:12 Nonononoki

The issue is I'm not sure if I can easily reproduce the issue.

Question: Is it possible to see what the 18 entries are by opening a text file or sql database somewhere? Where is the list of entries located? I can erase the program data but I really don't want to miss what those 18 errored downloads are.

Drakonas avatar Dec 04 '21 22:12 Drakonas