ios - Xamarin.Forms iOS 15 导致应用程序冻结/崩溃
问题描述
在 iOS 15 发布后,我们一直看到冻结问题,然后我们的应用程序崩溃,这似乎是我们无法调试的本机库。我们所有的 Nuget 都是最新的,包括在 5.0.0.2196 的最新 Xamarin.Forms 上运行。我们已尝试使用其最新工具通过 App Center 构建应用程序(如果您尝试使用 Xamarin.iOS 15 和 Xcode 13 之前的任何内容,构建将失败)。我们已经尝试使用运行 Xamarin.iOS 15.0.0.6 的主机 Mac 以及使用 PC 和远程连接到主机 Mac 来强制它使用 Xamarin.iOS 15.0.0.8 构建。我们已经尝试安装 Visual Studio 2022 Preview 并在那里使用新的 Xamarin iOS 工具。此问题不会在 iOS 14.8 设备上出现,仅在 iOS 15.0.x 上
- 问题的总结是这样的(这个循环的每次尝试都不会发生这种情况,有时可能需要几次尝试,有时可能需要更多时间,但很少是第一次尝试)
- 用户登录我们的应用程序,我们的登录页面是一个 SyncFusion 日历控件,其背后有许多事件和数据加载
- 然后用户点击一个事件,该事件加载一个 Xamarin TabbedPage 并有大约 10 个用于选项卡的内页 - 再次是数据负载
- 用户可以很好地在不同的选项卡上移动,很好地上下滚动数据,等等在 TabbedPage 堆栈跟踪中
- 然后,用户使用后退按钮返回 SyncFusion 日历,并可以首先点击不同的日期,但在 1 或 2 秒后出现冻结,最终崩溃并显示下面的报告。
我们认为这个问题与某种垃圾收集或处理 TabbedPage 所使用的大量内存有关,因为在“返回”导航到 SFCalendar 时不会立即发生冻结再次,该循环并不总是发生,用户可以重复步骤 3-5,最终其中一个循环将导致以下结果:
Native Crash Reporting
=================================================================
Got a segv while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================
=================================================================
Native stacktrace:
=================================================================
0x108a59460 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : mono_dump_native_crash_info
0x108a4f5d8 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : mono_handle_native_crash
0x108a5d8e0 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : mono_sigsegv_signal_handler_debug
0x1f22a1c18 - /usr/lib/system/libsystem_platform.dylib : <redacted>
0xffffff819ac6da84 - Unknown
0x19ac6da84 - /usr/lib/libobjc.A.dylib : <redacted>
0x184d42e34 - /System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore : <redacted>
0x108c17fb0 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : xamarin_invoke_objc_method_implementation
0x108c18134 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : xamarin_release_trampoline
0x10265ac74 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : -[Xamarin_Forms_Platform_iOS_PageRenderer release]
0x182704b2c - /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation : <redacted>
0x185471cac - /System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore : <redacted>
0x19ac73f18 - /usr/lib/libobjc.A.dylib : <redacted>
0x19ac70c14 - /usr/lib/libobjc.A.dylib : objc_destructInstance
0x19ac7a338 - /usr/lib/libobjc.A.dylib : _objc_rootDealloc
0x184e79e80 - /System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore : <redacted>
0x184d42f9c - /System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore : <redacted>
0x19ac73f18 - /usr/lib/libobjc.A.dylib : <redacted>
0x19ac70c14 - /usr/lib/libobjc.A.dylib : objc_destructInstance
0x19ac7a338 - /usr/lib/libobjc.A.dylib : _objc_rootDealloc
0x184e79e80 - /System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore : <redacted>
0x184d42f9c - /System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore : <redacted>
0x184f131a0 - /System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore : <redacted>
0x108c1564c - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : xamarin_release_managed_ref
0x103a35cac - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : wrapper_managed_to_native_Foundation_NSObject_xamarin_release_managed_ref_intptr_bool
0x1039d9b30 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : Foundation_NSObject_ReleaseManagedRef
0x1039dce74 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : Foundation_NSObject_NSObject_Disposer_Drain_Foundation_NSObject
0x102a81d70 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr
0x108a60d28 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : mono_jit_runtime_invoke
0x108b1a8b4 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : mono_runtime_invoke_checked
0x108b1e0f4 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : mono_runtime_invoke
0x1026474e0 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : _ZL31native_to_managed_trampoline_46P11objc_objectP13objc_selectorPP11_MonoMethodS0_j
0x102647368 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : +[__NSObject_Disposer drain:]
0x183f35e0c - /System/Library/Frameworks/Foundation.framework/Foundation : <redacted>
0x182789030 - /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation : <redacted>
0x182799cf0 - /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation : <redacted>
0x1826d3ff8 - /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation : <redacted>
0x1826d9804 - /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation : <redacted>
0x1826ed3c8 - /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation : CFRunLoopRunSpecific
0x185093060 - /System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore : <redacted>
0x19defe38c - /System/Library/PrivateFrameworks/GraphicsServices.framework/GraphicsServices : GSEventRunModal
0x184e10b8c - /System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore : UIApplicationMain
0x103a34688 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : wrapper_managed_to_native_UIKit_UIApplication_UIApplicationMain_int_string___intptr_intptr
0x102a81d70 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr
0x1026907e4 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : Avianis_App_Platorm_Application_Main_string__
0x108a60d28 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : mono_jit_runtime_invoke
0x108b1a8b4 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : mono_runtime_invoke_checked
0x10397b5c0 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : UIKit_UIApplication_Main_string___System_Type_System_Type
0x108b20b68 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : mono_runtime_exec_main_checked
0x108a3f138 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : mono_jit_exec
0x108c24bf4 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : xamarin_main
0x10268f184 - /private/var/containers/Bundle/Application/B3BD93F9-3D6A-4799-BC38-D4E81FB1A2E0/Avianis.app/Avianis : main
0x10f49da24 - Unknown
=================================================================
Basic Fault Address Reporting
=================================================================
Memory around native instruction pointer (0x19ac72378):0x19ac72368 3f 3d 00 f1 a3
00 00 54 c9 12 40 f9 29 ad 7d 92 ?=
.....T..@.).}.
0x19ac72378 37 01 40 b9 b7 00 00 37 08
81 7d 92 08 11 40 f9 7.@....7..}...@.
0x19ac72388 08 ad
7d 92 17 01 40 b9 08 00 80 52 7a d0 3b d5 ..}...@....Rz.;.
0x19ac72398 49 1b 40 b9 f9 8a 20 90 39 f3 24 91 29 7f e8 88 I.@... .
9.$.)...
=================================================================
Managed Stacktrace:
=================================================================
at <unknown> <0xffffffff>
at Foundation.NSObject:xamarin_release_managed_ref <0x00007>
at Foundation.NSObject:ReleaseManagedRef <0x0004f>
at NSObject_Disposer:Drain <0x00173>
at System.Object:runtime_invoke_dynamic <0x0010f>
at <unknown> <0xffffffff>
at UIKit.UIApplication:UIApplicationMain <0x00007>
at UIKit.UIApplication:Main <0x000ef>
at Avianis.Platorm.Application:Main <0x000a3>
at System.Object:runtime_invoke_dynamic <0x0010f>
=================================================================```
解决方案
推荐阅读
- c# - 拥有没有 IUserAuth 或 IUserAuthDetails 依赖/实现的 UserAuthRepository
- c++ - 当我在子类中调用函数时,它是在调用父类函数
- bash - ncks:参数列表太长
- postgresql - PostgreSQL 选择最近 30 天的结果
- java - 如何实现 searchview 按城市/名称过滤用户?
- html - 下拉动画不起作用。它所显示的只是一个简单的出现和消失
- java - 带有部分标题的 Android 网格视图
- python-3.x - 尝试在 Anaconda 上安装 pygame 时,Python 3.x 被降级为 Python 2.7
- c++ - 如何超链接到 QAbstractItemModel 中的项目?
- kubernetes - Openshift 一个应用程序的多个路由器