首页 > 解决方案 > 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 上

  1. 问题的总结是这样的(这个循环的每次尝试都不会发生这种情况,有时可能需要几次尝试,有时可能需要更多时间,但很少是第一次尝试)
  2. 用户登录我们的应用程序,我们的登录页面是一个 SyncFusion 日历控件,其背后有许多事件和数据加载
  3. 然后用户点击一个事件,该事件加载一个 Xamarin TabbedPage 并有大约 10 个用于选项卡的内页 - 再次是数据负载
  4. 用户可以很好地在不同的选项卡上移动,很好地上下滚动数据,等等在 TabbedPage 堆栈跟踪中
  5. 然后,用户使用后退按钮返回 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>
=================================================================```

标签: iosxamarinios15

解决方案


推荐阅读