evrencoskun / TableView

TableView is a powerful Android library for displaying complex data structures and rendering tabular data composed of rows, columns and cells.
MIT License
3.14k stars 459 forks source link

Fatal Exception: java.lang.StackOverflowError: stack size 8MB #199

Open vicmns opened 5 years ago

vicmns commented 5 years ago

I'm getting the following error on my crashlytics log. I'm trying to reproduce it but I only managed to lock the horizontal scroll on the table. I just randomly clicked the column and row headers multiple times and then the horizontal scroll blocked.

Maybe it's related with the problem

Fatal Exception: java.lang.StackOverflowError: stack size 8MB
       at android.view.MotionEvent.obtain(MotionEvent.java:1531)
       at android.view.MotionEvent.obtain(MotionEvent.java:1755)
       at android.view.GestureDetector.onTouchEvent(GestureDetector.java:627)
       at com.evrencoskun.tableview.listener.itemclick.CellRecyclerViewItemClickListener.clickAction(CellRecyclerViewItemClickListener.java:48)
       at com.evrencoskun.tableview.listener.itemclick.AbstractItemClickListener$1.onSingleTapConfirmed(AbstractItemClickListener.java:57)
       at android.view.GestureDetector.onTouchEvent(GestureDetector.java:637)
       at com.evrencoskun.tableview.listener.itemclick.CellRecyclerViewItemClickListener.clickAction(CellRecyclerViewItemClickListener.java:48)
       at com.evrencoskun.tableview.listener.itemclick.AbstractItemClickListener$1.onSingleTapConfirmed(AbstractItemClickListener.java:57)
       at android.view.GestureDetector.onTouchEvent(GestureDetector.java:637)
       at com.evrencoskun.tableview.listener.itemclick.CellRecyclerViewItemClickListener.clickAction(CellRecyclerViewItemClickListener.java:48)
       at com.evrencoskun.tableview.listener.itemclick.AbstractItemClickListener$1.onSingleTapConfirmed(AbstractItemClickListener.java:57)
       at android.view.GestureDetector.onTouchEvent(GestureDetector.java:637)
       at com.evrencoskun.tableview.listener.itemclick.CellRecyclerViewItemClickListener.clickAction(CellRecyclerViewItemClickListener.java:48)
       at com.evrencoskun.tableview.listener.itemclick.AbstractItemClickListener$1.onSingleTapConfirmed(AbstractItemClickListener.java:57)
       at android.view.GestureDetector.onTouchEvent(GestureDetector.java:637)
       at com.evrencoskun.tableview.listener.itemclick.CellRecyclerViewItemClickListener.clickAction(CellRecyclerViewItemClickListener.java:48)
       at com.evrencoskun.tableview.listener.itemclick.AbstractItemClickListener$1.onSingleTapConfirmed(AbstractItemClickListener.java:57)
       at android.view.GestureDetector.onTouchEvent(GestureDetector.java:637)
       at com.evrencoskun.tableview.listener.itemclick.CellRecyclerViewItemClickListener.clickAction(CellRecyclerViewItemClickListener.java:48)
       at com.evrencoskun.tableview.listener.itemclick.AbstractItemClickListener$1.onSingleTapConfirmed(AbstractItemClickListener.java:57)
       at android.view.GestureDetector.onTouchEvent(GestureDetector.java:637)
       at com.evrencoskun.tableview.listener.itemclick.CellRecyclerViewItemClickListener.clickAction(CellRecyclerViewItemClickListener.java:48)
       at com.evrencoskun.tableview.listener.itemclick.AbstractItemClickListener$1.onSingleTapConfirmed(AbstractItemClickListener.java:57)
       at android.view.GestureDetector.onTouchEvent(GestureDetector.java:637)
       at com.evrencoskun.tableview.listener.itemclick.CellRecyclerViewItemClickListener.clickAction(CellRecyclerViewItemClickListener.java:48)
       at com.evrencoskun.tableview.listener.itemclick.AbstractItemClickListener$1.onSingleTapConfirmed(AbstractItemClickListener.java:57)
       at android.view.GestureDetector.onTouchEvent(GestureDetector.java:637)
       at com.evrencoskun.tableview.listener.itemclick.CellRecyclerViewItemClickListener.clickAction(CellRecyclerViewItemClickListener.java:48)
       at com.evrencoskun.tableview.listener.itemclick.AbstractItemClickListener$1.onSingleTapConfirmed(AbstractItemClickListener.java:57)
       at android.view.GestureDetector.onTouchEvent(GestureDetector.java:637)
       at com.evrencoskun.tableview.listener.itemclick.CellRecyclerViewItemClickListener.clickAction(CellRecyclerViewItemClickListener.java:48)
       at com.evrencoskun.tableview.listener.itemclick.AbstractItemClickListener$1.onSingleTapConfirmed(AbstractItemClickListener.java:57)
       at android.view.GestureDetector.onTouchEvent(GestureDetector.java:637)
       at com.evrencoskun.tableview.listener.itemclick.AbstractItemClickListener.onInterceptTouchEvent(AbstractItemClickListener.java:79)
       at androidx.recyclerview.widget.RecyclerView.dispatchOnItemTouch(RecyclerView.java:2962)
       at androidx.recyclerview.widget.RecyclerView.onTouchEvent(RecyclerView.java:3090)
       at android.view.View.dispatchTouchEvent(View.java:10041)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2668)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2349)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2674)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2363)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2674)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2363)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2674)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2363)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2674)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2363)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2674)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2363)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2674)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2363)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2674)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2363)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2674)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2363)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2674)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2363)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2674)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2363)
       at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:418)
       at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1831)
       at android.app.Activity.dispatchTouchEvent(Activity.java:3154)
       at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
       at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
       at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:380)
       at android.view.View.dispatchPointerEvent(View.java:10261)
       at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4728)
       at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4596)
       at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4033)
       at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4086)
       at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4052)
       at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4060)
       at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4033)
       at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4086)
       at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4052)
       at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4195)
       at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4060)
       at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4252)
       at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4033)
       at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4086)
       at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4052)
       at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4060)
       at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4033)
       at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6576)
       at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6550)
       at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6511)
       at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6710)
       at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
       at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
       at android.os.MessageQueue.next(MessageQueue.java:323)
       at android.os.Looper.loop(Looper.java:136)
       at android.app.ActivityThread.main(ActivityThread.java:6349)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:893)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)
antoniomerlin commented 4 years ago

did you getting this error before the above mentioned one

The specified child already has a parent. You must call removeView() on the child's parent first (Android)

CurtesMalteser commented 4 years ago

You’re loading up too much data in your app. Isn’t a problem related with library but the way how you manage it. 8Mb is limit to all app not just for table case. Try pagination and load data when needed, also free resources when possible. And antoniomerlin the specific view must be removed when parent view is destroyed and inflated back when recreated

antoniomerlin commented 4 years ago

Adding the view to itself it is probably cause of a infinite recursion, happened to me once

CurtesMalteser commented 4 years ago

Well, that’s an error for sure. I faced both problems and that’s how I solved them. Load and remove data on demand, and removing view from parent and add it back.

antoniomerlin commented 4 years ago

it's happening to me on 14 row & 6 column dataset only, so for me the cause was my previous comment