Understanding Hockapp backtrace

Dear community,

Someone installed my app on his Samsung Galaxy S7 (I guess so from the "samsung universal8890" string I read).

I have some login form in a menu and all of a sudden the app is crashing. I cannot reproduce that on my Galaxy S5. The person reported there was no option to upload the crash report to Google Play so I first asked to get a backtrace with aLogCat. As I got nothing interesting from it, I created a new beta version of my app by referencing HockeyApp as described in Xamarin blog posts (nothing fancy, straight activation).

Now I got this backtrace but I really do not understand what exactly is breaking (yes, out of range is clear but where does it occur is unclear) and I don't get how I may get a mapping.txt file when compiling my project.

The beta version was archived, then signed and uploaded to Google Play for closed beta testing.

Any hint on how to proceed from here would be highly appreciated.

Xamarin caused by: android.runtime.JavaProxyThrowable: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
  at System.ThrowHelper.ThrowArgumentOutOfRangeException (ExceptionArgument argument, ExceptionResource resource) <0x824b2830 + 0x00038> in <filename unknown>:0 
  at System.ThrowHelper.ThrowArgumentOutOfRangeException () <0x824b2808 + 0x0000f> in <filename unknown>:0 
  at System.Collections.Generic.List`1[T].get_Item (Int32 index) <0x7a74b5e8 + 0x00027> in <filename unknown>:0 
  at Cadenza.Collections.OrderedDictionary`2[TKey,TValue].get_Item (Int32 index) <0x808770c0 + 0x0005b> in <filename unknown>:0 
  at Xamarin.Forms.TemplatedItemsList`2[TView,TItem].GetGroup (Int32 index) <0x80877060 + 0x0003f> in <filename unknown>:0 
  at Xamarin.Forms.Platform.Android.ListViewAdapter.get_Count () <0x80876e68 + 0x0006b> in <filename unknown>:0 
  at Android.Widget.BaseAdapter.n_GetCount (IntPtr jnienv, IntPtr native__this) <0x7b5bb788 + 0x00037> in <filename unknown>:0 
  at (wrapper dynamic-method) System.Object:cae9e41b-0502-4779-af33-1a503bce4485 (intptr,intptr)
    at md5b60ffeb829f638581ab2bb9b1a7f4f3f.ListViewAdapter.n_getCount(Native Method)
    at md5b60ffeb829f638581ab2bb9b1a7f4f3f.ListViewAdapter.getCount(ListViewAdapter.java:44)
    at android.widget.HeaderViewListAdapter.getCount(HeaderViewListAdapter.java:132)
    at android.widget.AdapterView.isScrollableForAccessibility(AdapterView.java:1035)
    at android.widget.AdapterView.onInitializeAccessibilityEvent(AdapterView.java:1021)
    at android.widget.AbsListView.onInitializeAccessibilityEvent(AbsListView.java:1896)
    at android.widget.ListView.onInitializeAccessibilityEvent(ListView.java:3816)
    at android.widget.AdapterView.onRequestSendAccessibilityEvent(AdapterView.java:997)
    at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:714)
    at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:718)
    at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:718)
    at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:718)
    at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:718)
    at android.view.View.sendAccessibilityEventUncheckedInternal(View.java:5164)
    at android.view.View.sendAccessibilityEventUnchecked(View.java:5138)
    at android.view.View$SendViewStateChangedAccessibilityEvent.run(View.java:20353)
    at android.view.View$SendViewStateChangedAccessibilityEvent.runOrPost(View.java:20385)
    at android.view.View.notifyViewAccessibilityStateChangedIfNeeded(View.java:7519)
    at android.widget.TextView.setText(TextView.java:4880)
    at android.widget.TextView.setText(TextView.java:4727)
    at android.widget.TextView.setText(TextView.java:4702)
    at mono.android.widget.RadioGroup_OnCheckedChangeListenerImplementor.n_onCheckedChanged(Native Method)
    at mono.android.widget.RadioGroup_OnCheckedChangeListenerImplementor.onCheckedChanged(RadioGroup_OnCheckedChangeListenerImplementor.java:30)
    at android.widget.RadioGroup.setCheckedId(RadioGroup.java:174)
    at android.widget.RadioGroup.access$600(RadioGroup.java:54)
    at android.widget.RadioGroup$CheckedStateTracker.onCheckedChanged(RadioGroup.java:358)
    at android.widget.CompoundButton.setChecked(CompoundButton.java:140)
    at android.widget.CompoundButton.toggle(CompoundButton.java:91)
    at android.widget.RadioButton.toggle(RadioButton.java:76)
    at android.widget.CompoundButton.performClick(CompoundButton.java:103)
    at android.view.View$PerformClick.run(View.java:19270)
    at android.os.Handler.handleCallback(Handler.java:733)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:146)
    at android.app.ActivityThread.main(ActivityThread.java:5602)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
    at dalvik.system.NativeStart.main(Native Method)

Best Answer

Answers

  • XavierPerseguersXavierPerseguers CHMember ✭✭✭

    Found this page where a custom ProGuard configuration file may be specified:

    https://developer.xamarin.com/guides/android/deployment,testing,_and_metrics/publishing_an_application/part_1-_preparing_an_application_for_release/

    I tried to create one containing:

    -printmapping mapping.txt
    

    I see that my file is asked to be included by the ProGuard jar, along with other configuration files. But no mapping.txt file is ever created. Tried with a full path, does not help either. Even tried to change the base configuration file ~/Library/Developer/Xamarin/android-sdk-macosx/tools/proguard/proguard-android.txt without luck either.

    I will try to temporarily disable ProGuard for debugging this very problem (and I hope the HockeyApp backtrace will be more readable) but nevertheless, good would be to understand this as well.

Sign In or Register to comment.