xamarin / Xamarin.Forms

Xamarin.Forms is no longer supported. Migrate your apps to .NET MAUI.
https://aka.ms/xamarin-upgrade
Other
5.64k stars 1.88k forks source link

[Bug] CollectionViewRenderer ArgumentsOutOfRangeException #15567

Open fntc opened 1 year ago

fntc commented 1 year ago

Description

CollectionViewRenderer on iOS will crash the application when the ObservableItemsSource changes while it is recalculation the layout.

SIGABRT: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index MyFancyComplexDataList.get_Item (System.Int32 index) ObservableItemsSource.ElementAt (System.Int32 index) ObservableItemsSource.get_Item (System.Int32 index) ObservableItemsSource.get_Item (Foundation.NSIndexPath indexPath) ItemsViewController1[TItemsView].GetSizeForItem (Foundation.NSIndexPath indexPath) ItemsViewDelegator2[TItemsView,TViewController].GetSizeForItem (UIKit.UICollectionView collectionView, UIKit.UICollectionViewLayout layout, Foundation.NSIndexPath indexPath) (wrapper managed-to-native) ObjCRuntime.Messaging.objc_msgSendSuper(intptr,intptr) UICollectionViewLayout.PrepareLayout () ItemsViewLayout.PrepareLayout () (wrapper managed-to-native) UIKit.UIApplication.xamarin_UIApplicationMain(int,string[],intptr,intptr,intptr&) UIApplication.UIApplicationMain (System.Int32 argc, System.String[] argv, System.IntPtr principalClassName, System.IntPtr delegateClassName) UIApplication.Main (System.String[] args, System.Type principalClass, System.Type delegateClass) Application.Main (System.String[] args)

Steps to Reproduce

  1. List with data for CollectionView that changes (clear, add, remove) a lot
  2. Recalculation of CollectionView in progress while List gets cleared
  3. ArgumentOutOfRangeException -> App crash

Expected Behavior

Handle ArgumentOutOfRangeException gracefully, returning default item.

Actual Behavior

Renderer Crashing on ArgumentOutOfRangeException

Basic Information

Build Logs

Workaround

CollectionView.IsVisible=false Change Data CollectionView.IsVisible=true

reduces the amount of crashes

felipemomm commented 1 year ago

Facing the same issue here when using several CollectionViews. Is it possible to review the PR related to this ticket?

Jakar510 commented 11 months ago

Facing the same issue here when using several CollectionViews. Is it possible to review the PR related to this ticket?

As am I