Bug in carousel causing crash?

Hello, I've been experiencing a crash that I am not sure if it's your control (SfCarousel) or some support library in Xamarin, but here is the error I am experiencing.

I've reported this on Microsoft's forum as well, so here is what I posted there.


Hello, I have a doozy of a predicament... I've gone through every bit of code I am running and using the broadest try/catch statements I can, and I am still getting an exception when loading a page.
The exception I am getting is

  1. System.ArgumentOutOfRangeException: 'Index was out of range. Must be non-negative and less than the size of the collection.
  2. Parameter name: index'

and the output in the debug log is just

  1. **System.ArgumentOutOfRangeException:** 'Index was out of range. Must be non-negative and less than the size of the collection.
  2. Parameter name: index'

I've been trying to step through the code line by line, but it seems to be occurring after my page has finished loading.

Here is the output I can get from the debugger,


Thread started: <Thread Pool> #29
[ShootersToolbo] java_vm_ext.cc:570] JNI DETECTED ERROR IN APPLICATION: JNI NewString called with pending exception android.runtime.JavaProxyThrowable: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
[ShootersToolbo] java_vm_ext.cc:570] Parameter name: index
[ShootersToolbo] java_vm_ext.cc:570] at System.Collections.Generic.List`1[T].get_Item (System.Int32 index) [0x00009] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/external/corefx/src/Common/src/CoreLib/System/Collections/Generic/List.cs:161
[ShootersToolbo] java_vm_ext.cc:570] at Com.Syncfusion.Carousel.SfCarousel.RefreshCarousel () [0x00018] in <4ddf03d3dc184b718ceb42b3e42ef19a>:0
[ShootersToolbo] java_vm_ext.cc:570] at Com.Syncfusion.Carousel.SfCarousel.set_ViewMode (Com.Syncfusion.Carousel.ViewMode value) [0x0001b] in <4ddf03d3dc184b718ceb42b3e42ef19a>:0
[ShootersToolbo] java_vm_ext.cc:570] at Syncfusion.SfCarousel.XForms.Droid.SfCarouselMapping.OnCarouselPropertiesChanged (System.String propertyName, Syncfusion.SfCarousel.XForms.SfCarousel formsCarousel, Com.Syncfusion.Carousel.SfCarousel nativeCarousel) [0x0041a] in <4ddf03d3dc184b718ceb42b3e42ef19a>:0
[ShootersToolbo] java_vm_ext.cc:570] at Syncfusion.SfCarousel.XForms.Droid.SfCarouselRenderer.OnElementChanged (Xamarin.Forms.Platform.Android.ElementChangedEventArgs`1[TElement] e) [0x0008e] in <4ddf03d3dc184b718ceb42b3e42ef19a>:0
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].SetElement (TElement element) [0x000cb] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:241
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].Xamarin.Forms.Platform.Android.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement element) [0x00033] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:131
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.Platform.CreateRenderer (Xamarin.Forms.VisualElement element, Android.Content.Context context) [0x0003e] in D:\a\1\s\Xamarin.Forms.Platform.Android\Platform.cs:358
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementPackager.AddChild (Xamarin.Forms.VisualElement view, Xamarin.Forms.Platform.Android.IVisualElementRenderer oldRenderer, Xamarin.Forms.Platform.Android.RendererPool pool, System.Boolean sameChildren) [0x000b3] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:140
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementPackager.SetElement (Xamarin.Forms.VisualElement oldElement, Xamarin.Forms.VisualElement newElement) [0x00163] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:351
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementPackager.Load () [0x00000] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:112
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].SetPackager (Xamarin.Forms.Platform.Android.VisualElementPackager packager) [0x00007] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:481
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].SetElement (TElement element) [0x000e8] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:244
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].Xamarin.Forms.Platform.Android.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement element) [0x00033] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:131
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.Platform.CreateRenderer (Xamarin.Forms.VisualElement element, Android.Content.Context context) [0x0003e] in D:\a\1\s\Xamarin.Forms.Platform.Android\Platform.cs:358
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementPackager.AddChild (Xamarin.Forms.VisualElement view, Xamarin.Forms.Platform.Android.IVisualElementRenderer oldRenderer, Xamarin.Forms.Platform.Android.RendererPool pool, System.Boolean sameChildren) [0x000b3] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:140
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementPackager.SetElement (Xamarin.Forms.VisualElement oldElement, Xamarin.Forms.VisualElement newElement) [0x00163] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:351
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementPackager.Load () [0x00000] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:112
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].SetPackager (Xamarin.Forms.Platform.Android.VisualElementPackager packager) [0x00007] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:481
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].SetElement (TElement element) [0x000e8] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:244
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].Xamarin.Forms.Platform.Android.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement element) [0x00033] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:131
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.Platform.CreateRenderer (Xamarin.Forms.VisualElement element, Android.Content.Context context) [0x0003e] in D:\a\1\s\Xamarin.Forms.Platform.Android\Platform.cs:358
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.ScrollViewContainer.set_ChildView (Xamarin.Forms.View value) [0x0002f] in D:\a\1\s\Xamarin.Forms.Platform.Android\Renderers\ScrollViewContainer.cs:35
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.ScrollViewRenderer.LoadContent () [0x00000] in D:\a\1\s\Xamarin.Forms.Platform.Android\Renderers\ScrollViewRenderer.cs:369
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.ScrollViewRenderer.SetElement (Xamarin.Forms.VisualElement element) [0x000cf] in D:\a\1\s\Xamarin.Forms.Platform.Android\Renderers\ScrollViewRenderer.cs:99
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.Platform.CreateRenderer (Xamarin.Forms.VisualElement element, Android.Content.Context context) [0x0003e] in D:\a\1\s\Xamarin.Forms.Platform.Android\Platform.cs:358
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementPackager.AddChild (Xamarin.Forms.VisualElement view, Xamarin.Forms.Platform.Android.IVisualElementRenderer oldRenderer, Xamarin.Forms.Platform.Android.RendererPool pool, System.Boolean sameChildren) [0x000b3] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:140
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementPackager.SetElement (Xamarin.Forms.VisualElement oldElement, Xamarin.Forms.VisualElement newElement) [0x00163] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:351
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementPackager.Load () [0x00000] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:112
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].SetPackager (Xamarin.Forms.Platform.Android.VisualElementPackager packager) [0x00007] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:481
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].SetElement (TElement element) [0x000e8] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:244
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].Xamarin.Forms.Platform.Android.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement element) [0x00033] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:131
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.Platform.CreateRenderer (Xamarin.Forms.VisualElement element, Android.Content.Context context) [0x0003e] in D:\a\1\s\Xamarin.Forms.Platform.Android\Platform.cs:358
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementPackager.AddChild (Xamarin.Forms.VisualElement view, Xamarin.Forms.Platform.Android.IVisualElementRenderer oldRenderer, Xamarin.Forms.Platform.Android.RendererPool pool, System.Boolean sameChildren) [0x000b3] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:140
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementPackager.SetElement (Xamarin.Forms.VisualElement oldElement, Xamarin.Forms.VisualElement newElement) [0x00163] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:351
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementPackager.Load () [0x00000] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:112
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].SetPackager (Xamarin.Forms.Platform.Android.VisualElementPackager packager) [0x00007] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:481
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].SetElement (TElement element) [0x000e8] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:244
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].Xamarin.Forms.Platform.Android.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement element) [0x00033] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:131
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.Platform.CreateRenderer (Xamarin.Forms.VisualElement element, AndroidX.Fragment.App.FragmentManager fragmentManager, Android.Content.Context context) [0x00031] in D:\a\1\s\Xamarin.Forms.Platform.Android\Platform.cs:404
[ShootersToolbo] java_vm_ext.cc:570] at Xamarin.Forms.Platform.Android.AppCompat.FragmentContainer.OnCreateView (Android.Views.LayoutInflater inflater, Android.Views.ViewGroup container, Android.OS.Bundle savedInstanceState) [0x00008] in D:\a\1\s\Xamarin.Forms.Platform.Android\AppCompat\FragmentContainer.cs:57
[ShootersToolbo] java_vm_ext.cc:570] at AndroidX.Fragment.App.Fragment.n_OnCreateView_Landroid_view_LayoutInflater_Landroid_view_ViewGroup_Landroid_os_Bundle_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_inflater, System.IntPtr native_container, System.IntPtr native_savedInstanceState) [0x00021] in /Users/runner/work/1/s/generated/androidx.fragment.fragment/obj/Release/monoandroid9.0/generated/src/AndroidX.Fragment.App.Fragment.cs:1977
[ShootersToolbo] java_vm_ext.cc:570] at (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.55(intptr,intptr,intptr,intptr,intptr)
[ShootersToolbo] java_vm_ext.cc:570] at android.view.View crc64720bb2db43a66fe9.FragmentContainer.n_onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle) (FragmentContainer.java:-2)
[ShootersToolbo] java_vm_ext.cc:570] at android.view.View crc64720bb2db43a66fe9.FragmentContainer.onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle) (FragmentContainer.java:41)
[ShootersToolbo] java_vm_ext.cc:570] at void androidx.fragment.app.Fragment.performCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle) (Fragment.java:2963)
[ShootersToolbo] java_vm_ext.cc:570] at void androidx.fragment.app.FragmentStateManager.createView() (FragmentStateManager.java:518)
[ShootersToolbo] java_vm_ext.cc:570] at void androidx.fragment.app.FragmentStateManager.moveToExpectedState() (FragmentStateManager.java:282)
[ShootersToolbo] java_vm_ext.cc:570] at void androidx.fragment.app.FragmentManager.executeOpsTogether(java.util.ArrayList, java.util.ArrayList, int, int) (FragmentManager.java:2189)
[ShootersToolbo] java_vm_ext.cc:570] at void androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(java.util.ArrayList, java.util.ArrayList) (FragmentManager.java:2100)
[ShootersToolbo] java_vm_ext.cc:570] at boolean androidx.fragment.app.FragmentManager.execPendingActions(boolean) (FragmentManager.java:2002)
[ShootersToolbo] java_vm_ext.cc:570] at void androidx.fragment.app.FragmentManager$5.run() (FragmentManager.java:524)
[ShootersToolbo] java_vm_ext.cc:570] at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:883)
[ShootersToolbo] java_vm_ext.cc:570] at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:100)
[ShootersToolbo] java_vm_ext.cc:570] at void android.os.Looper.loop() (Looper.java:214)
[ShootersToolbo] java_vm_ext.cc:570] at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:7356)
[ShootersToolbo] java_vm_ext.cc:570] at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
[ShootersToolbo] java_vm_ext.cc:570] at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:492)
[ShootersToolbo] java_vm_ext.cc:570] at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:930)
[ShootersToolbo] java_vm_ext.cc:570]
[ShootersToolbo] java_vm_ext.cc:570] in call to NewString
[ShootersToolbo] java_vm_ext.cc:570] from android.view.View crc64720bb2db43a66fe9.FragmentContainer.n_onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)
[ShootersToolbo] runtime.cc:630] Runtime aborting...

Not sure what is going on here, but I don't know what I can do to fix this?

Cheers!


3 Replies

JK Jeya Kasipandi Syncfusion Team July 7, 2021 12:39 PM UTC

Hi Jesse,

We have checked the reported issue, but we are unable to reproduce the reported issue. We would like to inform you that we have included the possible fix based on the provided stack trace since we are unable to reproduce the reported issue. Please find the patch details form below.

Advanced approach – use only if you have specific needs and can directly replace existing assemblies for your build environment

https://syncfusion.com/Installs/support/patch/19.2.0.44/1173638/F166994/SyncfusionPatch_19.2.0.44_1173638_7072021063219547_F166994.exe  

(OR)

Please find the patch assemblies from below location:

https://syncfusion.com/Installs/support/patch/19.2.0.44/1173638/F166994/SyncfusionPatch_19.2.0.44_1173638_7072021063219547_F166994.zip

(OR)

Please find the NuGet from below location:

https://syncfusion.com/Installs/support/patch/19.2.0.44/1173638/F166994/SyncfusionNuget_19.2.0.44_1173638_7072021063219547_F166994.zip

Assembly Version: 19.2.0.44

Disclaimer:

Please note that we have created this patch for version 19.2.0.44 specifically to resolve the issue reported in this. If you have received other patches for the same version for other products, please apply all patches in the order received

Note: Please clear the NuGet cache, before using the latest one.

https://www.syncfusion.com/kb/6987/how-to-clear-nuget-cache  

Please check with the above fix and let us know if the issue is resolved at your end or not. Based on your confirmation, we will include the fix in our upcoming NuGet release .

Regards,
Jeya K


JK Jesse Knott July 8, 2021 08:32 AM UTC

I was able to track down what was causing the problem.

It has to do with assigning a ObservableCollection with 0 elements to the control. 

If I use


    var myCollection = new ObservableCollection<Photos>();

    carousel.ItemSource = myCollection;

I get the crash, But if I use


    var myCollection = new ObservableCollection<Photos>();

    if (myCollection.Count > 0)

        carousel.ItemSource = myCollection;

it works fine.

I will try making a sample app to confirm but after adding the aforementioned `if` statement to my code, I no longer get the error.


Cheers!



JK Jeya Kasipandi Syncfusion Team July 9, 2021 12:20 PM UTC

Hi Jesse,

Thanks for the update.

We will wait to hear from you. Please let us know if you have any other queries.

Regards,
Jeya K
 


Loader.
Up arrow icon