03-16 11:09:04.504 30325-30325/org.kiwix.kiwixmobile E/AndroidRuntime: FATAL EXCEPTION: main
Process: org.kiwix.kiwixmobile, PID: 30325
java.lang.IndexOutOfBoundsException: Index: 3, Size: 0
at java.util.ArrayList.get(ArrayList.java:411)
at org.kiwix.kiwixmobile.library.LibraryAdapter.getView(LibraryAdapter.java:148)
at android.widget.AbsListView.obtainView(AbsListView.java:2378)
at android.widget.ListView.makeAndAddView(ListView.java:1970)
at android.widget.ListView.fillDown(ListView.java:704)
at android.widget.ListView.fillSpecific(ListView.java:1412)
at android.widget.ListView.layoutChildren(ListView.java:1708)
at android.widget.AbsListView.onLayout(AbsListView.java:2170)
at android.view.View.layout(View.java:17641)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:611)
at android.view.View.layout(View.java:17641)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
at android.view.View.layout(View.java:17641)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17641)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1769)
at android.view.View.layout(View.java:17641)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.support.design.widget.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:132)
at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42)
at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1361)
at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:874)
at android.view.View.layout(View.java:17641)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17641)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17641)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17641)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17641)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at com.android.internal.policy.DecorView.onLayout(DecorView.java:729)
at android.view.View.layout(View.java:17641)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2346)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2068)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6344)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874)
at android.view.Choreographer.doCallbacks(Choreographer.java:686)
at android.view.Choreographer.doFrame(Choreographer.java:621)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860)
at android.os.Handler.handleCallback(Handler.java:751)
03-16 11:09:04.504 30325-30325/org.kiwix.kiwixmobile E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
Swipe refresh
...
What should be the behavior from your point of view? How do you expect the service to work?
The app does not crash if we press the search button and then go back. The same should be implemented on back press.
@kelson42 @mhutti1 Can you try to reproduce this?
@harshvardhan-takawale why? If you have it, this is good enough.
@harshvardhan-takawale i tried reproducing it but it didn't crash for me.
@GeVic you will have to press back twice, to the point where the bar reads Library as the heading. Then swipe to refresh.
@harshvardhan-takawale i tried but it didn't crash.
Should i send you a gif?
@GeVic Yes please.
@harshvardhan-takawale so yes it crashed and goes back to wiki page but it happened only once in 10-15 tries.
Is it happening consecutively for you?
@GeVic Yes it happens everytime I do it.
@harshvardhan-takawale Let me send you a gif in some time

@harshvardhan-takawale This is what i am getting and occasionally it crashes also.
@GeVic No no, you are getting me wrong. Open the online tab. Let it load. Go to search and type something random. Press back twice to get back and then refresh.
@harshvardhan-takawale i did that only, actually i uploaded the wrong gif
@harshvardhan-takawale can you check the video on below link please, i dont have my laptop handy right now.
https://drive.google.com/a/bennett.edu.in/file/d/1cZ-sxdb-XjuIXpWgG_k_6--BWnl9xJQW/view?usp=drivesdk
@GeVic You are doing all the steps correctly. Something seems to be wrong. I have to do a bit more research. You are using kiwixDebug only right?
@harshvardhan-takawale yes.
Tried out the same on Emulator Android 8.1.0 same version and build. It didn't crash for me. I tried several times, no crash was observed.
My personal experience is that the library, during a download, crashes time to time.... sporadically. I can not tell why or how to make it reproducible.... but quite sure something here is not properly implemented. One point which seems weak is the handling of download termination, time to time the item is stuck inthe downloading tab and does not want to migrate to the device tab... clicking on it brings the app to crash.
@kelson42 @harshvardhan-takawale to be precise it crashes only when i click back while the searching of results still processing, then only it crashes to the main page of the app.
I am able to reproduce the error reliably, is it fine that I work on it?
03-23 22:26:45.408 16637-16637/org.kiwix.kiwixmobile E/AndroidRuntime: FATAL EXCEPTION: main
Process: org.kiwix.kiwixmobile, PID: 16637
java.lang.IndexOutOfBoundsException: Invalid index 4, size is 0
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at org.kiwix.kiwixmobile.library.LibraryAdapter.getView(LibraryAdapter.java:148)
at android.widget.AbsListView.obtainView(AbsListView.java:2346)
at android.widget.ListView.makeAndAddView(ListView.java:1876)
at android.widget.ListView.fillDown(ListView.java:702)
at android.widget.ListView.fillSpecific(ListView.java:1367)
at android.widget.ListView.layoutChildren(ListView.java:1663)
at android.widget.AbsListView.onLayout(AbsListView.java:2148)
at android.view.View.layout(View.java:16692)
at android.view.ViewGroup.layout(ViewGroup.java:5445)
at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:611)
at android.view.View.layout(View.java:16692)
at android.view.ViewGroup.layout(ViewGroup.java:5445)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1080)
at android.view.View.layout(View.java:16692)
at android.view.ViewGroup.layout(ViewGroup.java:5445)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16692)
at android.view.ViewGroup.layout(ViewGroup.java:5445)
at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1769)
at android.view.View.layout(View.java:16692)
at android.view.ViewGroup.layout(ViewGroup.java:5445)
at android.support.design.widget.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:132)
at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42)
at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1361)
at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:874)
at android.view.View.layout(View.java:16692)
at android.view.ViewGroup.layout(ViewGroup.java:5445)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16692)
at android.view.ViewGroup.layout(ViewGroup.java:5445)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16692)
at android.view.ViewGroup.layout(ViewGroup.java:5445)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16692)
at android.view.ViewGroup.layout(ViewGroup.java:5445)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16692)
at android.view.ViewGroup.layout(ViewGroup.java:5445)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2684)
at android.view.View.layout(View.java:16692)
at android.view.ViewGroup.layout(ViewGroup.java:5445)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2178)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1938)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1114)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6068)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:606)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.hand
03-23 22:26:45.408 16637-16637/org.kiwix.kiwixmobile D/AppTracker: App Event: crash
This kind of bug should have been fixed with 2.5 by @macgills