afriscic/BarcodeScanning.Native.Maui

Shell crash regression after 1.0.2

Closed this issue · 4 comments

There's a crash that's only happening after later changes. It happens when we have the component in a Shell tab, navigate away from that tab to another tab (in this instance containing a MapView, but same thing whichever one), navigate back to the original, then away again.

Thanks for the awesome lib btw!

System.NotSupportedException: Unable to activate instance of type BarcodeScanning.Platforms.Android.BarcodeView from native handle 0x73babd0045 (key_handle 0xeb0df9a).
 ---> System.MissingMethodException: No constructor found for BarcodeScanning.Platforms.Android.BarcodeView::.ctor(System.IntPtr, Android.Runtime.JniHandleOwnership)
 ---> Java.Interop.JavaLocationException: Exception of type 'Java.Interop.JavaLocationException' was thrown.
Java.Lang.Error: Exception of type 'Java.Lang.Error' was thrown.

  --- End of managed Java.Lang.Error stack trace ---
java.lang.Error: Java callstack:
	at crc6471f056c3c23d95e9.MainActivity.n_dispatchTouchEvent(Native Method)
	at crc6471f056c3c23d95e9.MainActivity.dispatchTouchEvent(MainActivity.java:106)
	at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:70)
	at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:448)
	at android.view.View.dispatchPointerEvent(View.java:15919)
	at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:7021)
	at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:6815)
	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6229)
	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6286)
	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6252)
	at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:6417)
	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6260)
	at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:6474)
	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6233)
	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6286)
	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6252)
	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6260)
	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6233)
	at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:9211)
	at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:9162)
	at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:9131)
	at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:9337)
	at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:267)
	at android.os.MessageQueue.nativePollOnce(Native Method)
	at android.os.MessageQueue.next(MessageQueue.java:335)
	at android.os.Looper.loopOnce(Looper.java:162)
	at android.os.Looper.loop(Looper.java:294)
	at android.app.ActivityThread.main(ActivityThread.java:8177)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)

  --- End of managed Java.Lang.Error stack trace ---
java.lang.Error: Java callstack:
	at crc6471f056c3c23d95e9.MainActivity.n_dispatchTouchEvent(Native Method)
	at crc6471f056c3c23d95e9.MainActivity.dispatchTouchEvent(MainActivity.java:106)
	at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:70)
	at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:448)
	at android.view.View.dispatchPointerEvent(View.java:15919)
	at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:7021)
	at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:6815)
	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6229)
	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6286)
	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6252)
	at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:6417)
	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6260)
	at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:6474)
	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6233)
	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6286)
	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6252)
	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6260)
	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6233)
	at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:9211)
	at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:9162)
	at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:9131)
	at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:9337)
	at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:267)
	at android.os.MessageQueue.nativePollOnce(Native Method)
	at android.os.MessageQueue.next(MessageQueue.java:335)
	at android.os.Looper.loopOnce(Looper.java:162)
	at android.os.Looper.loop(Looper.java:294)
	at android.app.ActivityThread.main(ActivityThread.java:8177)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)

   --- End of inner exception stack trace ---
   at Java.Interop.TypeManager.CreateProxy(Type type, IntPtr handle, JniHandleOwnership transfer) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Java.Interop/TypeManager.cs:line 349
   at Java.Interop.TypeManager.CreateInstance(IntPtr handle, JniHandleOwnership transfer, Type targetType) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Java.Interop/TypeManager.cs:line 311
   --- End of inner exception stack trace ---
   at Java.Interop.TypeManager.CreateInstance(IntPtr handle, JniHandleOwnership transfer, Type targetType) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Java.Interop/TypeManager.cs:line 318
   at Java.Lang.Object.GetObject(IntPtr handle, JniHandleOwnership transfer, Type type) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Java.Lang/Object.cs:line 303
   at Java.Lang.Object._GetObject[View](IntPtr handle, JniHandleOwnership transfer) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Java.Lang/Object.cs:line 289
   at Java.Lang.Object.GetObject[View](IntPtr handle, JniHandleOwnership transfer) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Java.Lang/Object.cs:line 281
   at Android.Views.ViewGroup.GetChildAt(Int32 index) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/net8.0/android-34/mcw/Android.Views.ViewGroup.cs:line 3135
   at Microsoft.Maui.Platform.ViewGroupExtensions.<GetChildrenOfType>d__0`1[[Android.Gms.Maps.MapView, Xamarin.GooglePlayServices.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\a\_work\1\s\src\Core\src\Platform\Android\ViewGroupExtensions.cs:line 15
   at Microsoft.Maui.Platform.ViewGroupExtensions.<GetChildrenOfType>d__0`1[[Android.Gms.Maps.MapView, Xamarin.GooglePlayServices.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\a\_work\1\s\src\Core\src\Platform\Android\ViewGroupExtensions.cs:line 24
   at Microsoft.Maui.Platform.ViewGroupExtensions.<GetChildrenOfType>d__0`1[[Android.Gms.Maps.MapView, Xamarin.GooglePlayServices.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\a\_work\1\s\src\Core\src\Platform\Android\ViewGroupExtensions.cs:line 24
   at Microsoft.Maui.Platform.ViewGroupExtensions.<GetChildrenOfType>d__0`1[[Android.Gms.Maps.MapView, Xamarin.GooglePlayServices.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\a\_work\1\s\src\Core\src\Platform\Android\ViewGroupExtensions.cs:line 24
   at Microsoft.Maui.Platform.ViewGroupExtensions.<GetChildrenOfType>d__0`1[[Android.Gms.Maps.MapView, Xamarin.GooglePlayServices.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\a\_work\1\s\src\Core\src\Platform\Android\ViewGroupExtensions.cs:line 24
   at Microsoft.Maui.Platform.ViewGroupExtensions.<GetChildrenOfType>d__0`1[[Android.Gms.Maps.MapView, Xamarin.GooglePlayServices.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\a\_work\1\s\src\Core\src\Platform\Android\ViewGroupExtensions.cs:line 24
   at Microsoft.Maui.Platform.ViewGroupExtensions.<GetChildrenOfType>d__0`1[[Android.Gms.Maps.MapView, Xamarin.GooglePlayServices.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\a\_work\1\s\src\Core\src\Platform\Android\ViewGroupExtensions.cs:line 24
   at Microsoft.Maui.Platform.ViewGroupExtensions.<GetChildrenOfType>d__0`1[[Android.Gms.Maps.MapView, Xamarin.GooglePlayServices.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\a\_work\1\s\src\Core\src\Platform\Android\ViewGroupExtensions.cs:line 24
   at Microsoft.Maui.Platform.ViewGroupExtensions.<GetChildrenOfType>d__0`1[[Android.Gms.Maps.MapView, Xamarin.GooglePlayServices.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\a\_work\1\s\src\Core\src\Platform\Android\ViewGroupExtensions.cs:line 24
   at Microsoft.Maui.Platform.ViewGroupExtensions.<GetChildrenOfType>d__0`1[[Android.Gms.Maps.MapView, Xamarin.GooglePlayServices.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\a\_work\1\s\src\Core\src\Platform\Android\ViewGroupExtensions.cs:line 24
   at Microsoft.Maui.Platform.ViewGroupExtensions.<GetChildrenOfType>d__0`1[[Android.Gms.Maps.MapView, Xamarin.GooglePlayServices.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\a\_work\1\s\src\Core\src\Platform\Android\ViewGroupExtensions.cs:line 24
   at Microsoft.Maui.Platform.ViewGroupExtensions.<GetChildrenOfType>d__0`1[[Android.Gms.Maps.MapView, Xamarin.GooglePlayServices.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\a\_work\1\s\src\Core\src\Platform\Android\ViewGroupExtensions.cs:line 24
   at Microsoft.Maui.Platform.ViewGroupExtensions.<GetChildrenOfType>d__0`1[[Android.Gms.Maps.MapView, Xamarin.GooglePlayServices.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\a\_work\1\s\src\Core\src\Platform\Android\ViewGroupExtensions.cs:line 24
   at Microsoft.Maui.Platform.ViewGroupExtensions.<GetChildrenOfType>d__0`1[[Android.Gms.Maps.MapView, Xamarin.GooglePlayServices.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\a\_work\1\s\src\Core\src\Platform\Android\ViewGroupExtensions.cs:line 24
   at Microsoft.Maui.Platform.ViewGroupExtensions.<GetChildrenOfType>d__0`1[[Android.Gms.Maps.MapView, Xamarin.GooglePlayServices.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\a\_work\1\s\src\Core\src\Platform\Android\ViewGroupExtensions.cs:line 24
   at Microsoft.Maui.Platform.ViewGroupExtensions.<GetChildrenOfType>d__0`1[[Android.Gms.Maps.MapView, Xamarin.GooglePlayServices.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\a\_work\1\s\src\Core\src\Platform\Android\ViewGroupExtensions.cs:line 24
   at Microsoft.Maui.Platform.ViewGroupExtensions.<GetChildrenOfType>d__0`1[[Android.Gms.Maps.MapView, Xamarin.GooglePlayServices.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\a\_work\1\s\src\Core\src\Platform\Android\ViewGroupExtensions.cs:line 24
   at Microsoft.Maui.Platform.ViewGroupExtensions.<GetChildrenOfType>d__0`1[[Android.Gms.Maps.MapView, Xamarin.GooglePlayServices.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\a\_work\1\s\src\Core\src\Platform\Android\ViewGroupExtensions.cs:line 24
   at Microsoft.Maui.Platform.ViewGroupExtensions.<GetChildrenOfType>d__0`1[[Android.Gms.Maps.MapView, Xamarin.GooglePlayServices.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\a\_work\1\s\src\Core\src\Platform\Android\ViewGroupExtensions.cs:line 24
   at Microsoft.Maui.Platform.ViewGroupExtensions.<GetChildrenOfType>d__0`1[[Android.Gms.Maps.MapView, Xamarin.GooglePlayServices.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\a\_work\1\s\src\Core\src\Platform\Android\ViewGroupExtensions.cs:line 24
   at Opter.Main.Mobile.Driver.Droid.MainActivity.DispatchTouchEvent(MotionEvent e) in /Users/tol/CODE2/OPTER/Main/Mobile/Driver/Opter.Main.Mobile.Driver/Platforms/Android/MainActivity.cs:line 310
   at Android.App.Activity.n_DispatchTouchEvent_Landroid_view_MotionEvent_(IntPtr jnienv, IntPtr native__this, IntPtr native_ev) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/net8.0/android-34/mcw/Android.App.Activity.cs:line 2049
   at Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PPL_Z(_JniMarshal_PPL_Z callback, IntPtr jnienv, IntPtr klazz, IntPtr p0) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:line 136

Oh, this was quite a headache to solve, not helped by MAUI's "good" documentation, inconsistencies and infinite scenarios to test...
There is a problem with DisconnectHandler() but only when ContentPage is registered in AppShell.xaml.
I'll have a fix for next release, but I would like to squeeze a bit more testing before i publish it.

Oi, MAUI's documentation is perfectly good as long as you don't run into any issues!
self-documenting code, self-documenting code, i continue to insist as i slowly shrink and transform into a corn cob.

pressed the wrong button sorry

Fixed in 1.2.2