nextcloud / talk-android

📱😀 Video & audio calls through Nextcloud on Android
Other
529 stars 238 forks source link

crash when opening "Share from Nextcloud" #1465

Open mahibi opened 3 years ago

mahibi commented 3 years ago

Steps to reproduce

  1. see title. doesn't always happen but i could reproduce it one time!

Expected behaviour

no crash

Actual behaviour

app crashes with following stacktrace:

E/AndroidRuntime: FATAL EXCEPTION: RxCachedThreadScheduler-8
    Process: com.nextcloud.talk2, PID: 18187
    java.lang.NullPointerException: subscribeActual failed
        at io.reactivex.Single.subscribe(Single.java:3671)
        at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
        at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:608)
        at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
        at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        at java.lang.Thread.run(Thread.java:762)
     Caused by: java.lang.IllegalStateException: Cannot call this method while RecyclerView is computing a layout or scrolling androidx.recyclerview.widget.RecyclerView{bbfa1a8 VFED..... ........ 0,256-1440,1984 #7f0a02c7 app:id/recycler_view}, adapter:eu.davidea.flexibleadapter.FlexibleAdapter@9047466, layout:eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager@f40d3a7, context:com.nextcloud.talk.activities.MainActivity@90107f3
        at androidx.recyclerview.widget.RecyclerView.assertNotInLayoutOrScroll(RecyclerView.java:3051)
        at androidx.recyclerview.widget.RecyclerView$RecyclerViewDataObserver.onItemRangeInserted(RecyclerView.java:5555)
        at androidx.recyclerview.widget.RecyclerView$AdapterDataObservable.notifyItemRangeInserted(RecyclerView.java:12278)
        at androidx.recyclerview.widget.RecyclerView$Adapter.notifyItemRangeInserted(RecyclerView.java:7498)
        at eu.davidea.flexibleadapter.FlexibleAdapter.performInsert(FlexibleAdapter.java:2962)
        at eu.davidea.flexibleadapter.FlexibleAdapter.addItems(FlexibleAdapter.java:2941)
        at com.nextcloud.talk.components.filebrowser.controllers.BrowserController.listingResult(BrowserController.java:218)
        at com.nextcloud.talk.components.filebrowser.operations.DavListing$1.onSuccess(DavListing.java:60)
        at com.nextcloud.talk.components.filebrowser.operations.DavListing$1.onSuccess(DavListing.java:51)
        at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.onSuccess(SingleSubscribeOn.java:68)
        at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:56)
        at io.reactivex.Single.subscribe(Single.java:3666)
        at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89) 
        at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:608) 
        at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66) 
        at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57) 
        at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
        at java.lang.Thread.run(Thread.java:762) 

Device information

Talk version: happened with 12.2.0 Alpha 4 as well as 12.1.1

AndyScherzinger commented 3 years ago

Async work, the recycler view probably has items alerady / is scroleld etc. and the callback adds items to the recycler view. Probably needs some kind of a try/catch/retry mechanism.

muchachagrande commented 3 years ago

I have this problem on Talk 12.1.2 on Android 6 (Google Play)