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

IllegalArgumentException crash in JniEnvironment+InstanceMethods.CallNonvirtualBooleanMethod #14245

Open holecekp opened 3 years ago

holecekp commented 3 years ago

Steps to Reproduce

My application uses AppCenter to report crashes. I have received the following crash report:

Java.Lang.IllegalArgumentException: Exception of type 'Java.Lang.IllegalArgumentException' was thrown. Stack trace:

    JniEnvironment+InstanceMethods.CallNonvirtualBooleanMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniObjectReference type, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args)
    JniPeerMembers+JniInstanceMethods.InvokeVirtualBooleanMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters)
    View.DispatchTouchEvent (Android.Views.MotionEvent e)
    VisualElementRenderer`1[TElement].DispatchTouchEvent (Android.Views.MotionEvent e)
    View.n_DispatchTouchEvent_Landroid_view_MotionEvent_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_e)
    (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.33(intptr,intptr,intptr)
    java.lang.IllegalArgumentException
    com.android.internal.util.Preconditions.checkArgument Preconditions.java:35
    android.widget.SelectionActionModeHelper$TextClassificationHelper.init SelectionActionModeHelper.java:1062
    android.widget.SelectionActionModeHelper.resetTextClassificationHelper SelectionActionModeHelper.java:468
    android.widget.SelectionActionModeHelper.resetTextClassificationHelper SelectionActionModeHelper.java:476
    android.widget.SelectionActionModeHelper.invalidateActionModeAsync SelectionActionModeHelper.java:163
    android.widget.Editor.invalidateActionModeAsync Editor.java:2170
    android.widget.Editor.showFloatingToolbar Editor.java:1547
    android.widget.Editor.updateFloatingToolbarVisibility Editor.java:1525
    android.widget.Editor.onTouchEvent Editor.java:1490
    android.widget.TextView.onTouchEvent TextView.java:10854
    android.view.View.dispatchTouchEvent View.java:13464
    android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3113
    android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2777
    crc643f46942d9dd1fff9.VisualElementRenderer_1.n_dispatchTouchEvent(Native Method)
    crc643f46942d9dd1fff9.VisualElementRenderer_1.dispatchTouchEvent(Unknown Source:0)
    android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3113
    android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2777
    crc643f46942d9dd1fff9.Platform_DefaultRenderer.n_dispatchTouchEvent(Native Method)
    crc643f46942d9dd1fff9.Platform_DefaultRenderer.dispatchTouchEvent(Unknown Source:0)
    android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3113
    android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2777
    crc643f46942d9dd1fff9.Platform_DefaultRenderer.n_dispatchTouchEvent(Native Method)
    crc643f46942d9dd1fff9.Platform_DefaultRenderer.dispatchTouchEvent(Unknown Source:0)
    android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3113
    android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2777
    crc643f46942d9dd1fff9.VisualElementRenderer_1.n_dispatchTouchEvent(Native Method)
    crc643f46942d9dd1fff9.VisualElementRenderer_1.dispatchTouchEvent(Unknown Source:0)
    android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3113
    android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2777
    android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3113
    android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2777
    android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3113
    android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2777
    android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3113
    android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2777
    android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3113
    android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2777
    android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3113
    android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2777
    android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3113
    android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2777
    android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3113
    android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2777
    crc643f46942d9dd1fff9.PlatformRenderer.n_dispatchTouchEvent(Native Method)
    crc643f46942d9dd1fff9.PlatformRenderer.dispatchTouchEvent(Unknown Source:0)
    android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3113
    android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2777
    android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3113
    android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2777
    android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3113
    android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2777
    android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3113
    android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2777
    android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3113
    android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2777
    android.view.ViewGroup.dispatchTransformedTouchEvent ViewGroup.java:3113
    android.view.ViewGroup.dispatchTouchEvent ViewGroup.java:2777
    com.android.internal.policy.DecorView.superDispatchTouchEvent DecorView.java:466
    com.android.internal.policy.PhoneWindow.superDispatchTouchEvent PhoneWindow.java:1851
    android.app.Activity.dispatchTouchEvent Activity.java:4060
    androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(Unknown Source:2)
    androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(Unknown Source:2)
    com.android.internal.policy.DecorView.dispatchTouchEvent DecorView.java:424
    android.view.View.dispatchPointerEvent View.java:13728
    android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent ViewRootImpl.java:5667
    android.view.ViewRootImpl$ViewPostImeInputStage.onProcess ViewRootImpl.java:5461
    android.view.ViewRootImpl$InputStage.deliver ViewRootImpl.java:4960
    android.view.ViewRootImpl$InputStage.onDeliverToNext ViewRootImpl.java:5013
    android.view.ViewRootImpl$InputStage.forward ViewRootImpl.java:4979
    android.view.ViewRootImpl$AsyncInputStage.forward ViewRootImpl.java:5119
    android.view.ViewRootImpl$InputStage.apply ViewRootImpl.java:4987
    android.view.ViewRootImpl$AsyncInputStage.apply ViewRootImpl.java:5176
    android.view.ViewRootImpl$InputStage.deliver ViewRootImpl.java:4960
    android.view.ViewRootImpl$InputStage.onDeliverToNext ViewRootImpl.java:5013
    android.view.ViewRootImpl$InputStage.forward ViewRootImpl.java:4979
    android.view.ViewRootImpl$InputStage.apply ViewRootImpl.java:4987
    android.view.ViewRootImpl$InputStage.deliver ViewRootImpl.java:4960
    android.view.ViewRootImpl.deliverInputEvent ViewRootImpl.java:7767
    android.view.ViewRootImpl.doProcessInputEvents ViewRootImpl.java:7736
    android.view.ViewRootImpl.enqueueInputEvent ViewRootImpl.java:7687
    android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent ViewRootImpl.java:7906
    android.view.InputEventReceiver.dispatchInputEvent InputEventReceiver.java:188
    android.os.MessageQueue.nativePollOnce(Native Method)
    android.os.MessageQueue.next MessageQueue.java:336
    android.os.Looper.loop Looper.java:174
    android.app.ActivityThread.main ActivityThread.java:7399
    java.lang.reflect.Method.invoke(Native Method)
    com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:502
    com.android.internal.os.ZygoteInit.main ZygoteInit.java:980

OS Version: Android 10 Device that reported the crash: Lenovo Tab M10 FHD Plus

I am not able to reproduce this crash. I have only this crash report so I cannot provide steps for reproducing it.

Expected Behavior

No crashes.

Actual Behavior

A crash is reported.

Version Information

Nuget packages: Microsoft.AppCenter.Crashes - 4.1.0 Xamarin.AndroidX.MediaRouter - 1.2.0 Xamarin.Essentials - 1.6.1 Xamarin.Forms - 5.0.0.2012

Microsoft Visual Studio Community 2019 Version 16.9.4 VisualStudio.16.Release/16.9.4+31205.134 Microsoft .NET Framework Version 4.8.04084

Installed Version: Community

Visual C++ 2019 00435-60000-00000-AA088 Microsoft Visual C++ 2019

ASP.NET and Web Tools 2019 16.9.693.2781 ASP.NET and Web Tools 2019

ASP.NET Core Razor Language Services 16.1.0.2112521+5741df381174d72f08e3632bb99f52e8635b6a1a Provides languages services for ASP.NET Core Razor.

ASP.NET Web Frameworks and Tools 2019 16.9.693.2781 For additional information, visit https://www.asp.net/

Azure App Service Tools v3.0.0 16.9.693.2781 Azure App Service Tools v3.0.0

Azure Functions and Web Jobs Tools 16.9.693.2781 Azure Functions and Web Jobs Tools

C# Tools 3.9.0-6.21160.10+59eedc33d35754759994155ea2f4e1012a9951e3 C# components used in the IDE. Depending on your project type and settings, a different version of the compiler may be used.

Common Azure Tools 1.10 Provides common services for use by Azure Mobile Services and Microsoft Azure Tools.

Extensibility Message Bus 1.2.6 (master@34d6af2) Provides common messaging-based MEF services for loosely coupled Visual Studio extension components communication and integration.

IntelliCode Extension 1.0 IntelliCode Visual Studio Extension Detailed Info

Microsoft Azure Tools 2.9 Microsoft Azure Tools for Microsoft Visual Studio 2019 - v2.9.40331.1

Microsoft Continuous Delivery Tools for Visual Studio 0.4 Simplifying the configuration of Azure DevOps pipelines from within the Visual Studio IDE.

Microsoft JVM Debugger 1.0 Provides support for connecting the Visual Studio debugger to JDWP compatible Java Virtual Machines

Microsoft Library Manager 2.1.113+g422d40002e.RR Install client-side libraries easily to any web project

Microsoft MI-Based Debugger 1.0 Provides support for connecting Visual Studio to MI compatible debuggers

Microsoft Visual C++ Wizards 1.0 Microsoft Visual C++ Wizards

Microsoft Visual Studio Tools for Containers 1.1 Develop, run, validate your ASP.NET Core applications in the target environment. F5 your application directly into a container with debugging, or CTRL + F5 to edit & refresh your app without having to rebuild the container.

Microsoft Visual Studio VC Package 1.0 Microsoft Visual Studio VC Package

Mono Debugging for Visual Studio 16.9.7 (df23ba6) Support for debugging Mono processes with Visual Studio.

NuGet Package Manager 5.9.0 NuGet Package Manager in Visual Studio. For more information about NuGet, visit https://docs.nuget.org/

ProjectServicesPackage Extension 1.0 ProjectServicesPackage Visual Studio Extension Detailed Info

SQL Server Data Tools 16.0.62103.10080 Microsoft SQL Server Data Tools

TypeScript Tools 16.0.30201.2001 TypeScript Tools for Microsoft Visual Studio

Visual Basic Tools 3.9.0-6.21160.10+59eedc33d35754759994155ea2f4e1012a9951e3 Visual Basic components used in the IDE. Depending on your project type and settings, a different version of the compiler may be used.

Visual F# Tools 16.9.0-beta.21102.9+7ce7132f1459095e635194d09d6f73265352029a Microsoft Visual F# Tools

Visual Studio Code Debug Adapter Host Package 1.0 Interop layer for hosting Visual Studio Code debug adapters in Visual Studio

Visual Studio Container Tools Extensions 1.0 View, manage, and diagnose containers within Visual Studio.

Visual Studio Tools for Containers 1.0 Visual Studio Tools for Containers

VisualStudio.DeviceLog 1.0 Information about my package

VisualStudio.Foo 1.0 Information about my package

VisualStudio.Mac 1.0 Mac Extension for Visual Studio

Xamarin 16.9.000.273 (d16-9@1bba9e0) Visual Studio extension to enable development for Xamarin.iOS and Xamarin.Android.

Xamarin Designer 16.9.0.318 (remotes/origin/7b35adcdd1b204bbdcb279e0f029d151a20a4bf3@7b35adcdd) Visual Studio extension to enable Xamarin Designer tools in Visual Studio.

Xamarin Templates 16.9.72 (426ebf6) Templates for building iOS, Android, and Windows apps with Xamarin and Xamarin.Forms.

Xamarin.Android SDK 11.2.2.1 (d16-9/877f572) Xamarin.Android Reference Assemblies and MSBuild support. Mono: 5e9cb6d Java.Interop: xamarin/java.interop/d16-9@54f8c24 ProGuard: Guardsquare/proguard/v7.0.1@912d149 SQLite: xamarin/sqlite/3.34.1@daff8f4 Xamarin.Android Tools: xamarin/xamarin-android-tools/d16-9@d210f11

Xamarin.iOS and Xamarin.Mac SDK 14.14.2.5 (3836759d4) Xamarin.iOS and Xamarin.Mac Reference Assemblies and MSBuild support.

grendello commented 3 years ago

@holecekp does AppCenter give you a logcat? It's hard to tell what is happening here without more context :(

holecekp commented 3 years ago

@grendello AppCenter logs only stack trace. Logcat is not collected. I think that AppCenter would need some special permission to get access to the logcat anyway.

grendello commented 3 years ago

@holecekp by looking at the source code of the android.widget.SelectionActionModeHelper widget, I think you see this exception because of this code:

@UiThread
        public void init(Supplier<TextClassifier> textClassifier, CharSequence text,
                int selectionStart, int selectionEnd, LocaleList locales) {
            mTextClassifier = Preconditions.checkNotNull(textClassifier);
            mText = Preconditions.checkNotNull(text).toString();
            mLastClassificationText = null; // invalidate.
            Preconditions.checkArgument(selectionEnd > selectionStart); // <== EXCEPTION HERE
            mSelectionStart = selectionStart;
            mSelectionEnd = selectionEnd;
            mDefaultLocales = locales;
        }

You might want to examine your code around this condition inside the editor widget in one of your layouts and if your code doesn't affect/use/reference these selection boundaries, then perhaps it's a bug in Xamarin.Forms. I'm sorry, but I'm unable to tell you anything more than the above.

holecekp commented 3 years ago

@grendello I do not use android.widget.SelectionActionModeHelper directly so it will be a bug in Xamarin.Forms. Is it possible to move this issue to their repo, or should I open a new issue there?

grendello commented 3 years ago

@holecekp done!

holecekp commented 3 years ago

Hello. Is someone from Xamarin.Forms team monitoring the issues? It has been almost two weeks. I am not sure, if there is not a problem that the issue was moved from another repository and, therefore, it does not have t/bug and s/unverified labels, which all other new Xamarin.Forms issues have.