仅在 UIKitCore [UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:] iOS 12 中崩溃

Crash in UIKitCore [UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:] iOS 12 only

我收到了相当数量的崩溃报告给 Crashlytics。这只发生在 iOS 12 上,我不知道如何重现。也许用户在 WKWebView 上并试图根据 31 SafariServices 0x21d216740 __107+[_SFAutomaticPasswordInputViewController inputViewControllerWithAutoFillContext:passwordRules:completion:]_block_invoke.29 + 104

中的提示输入密码

如果有谁有类似的崩溃或者想法,不胜感激

更新: 此问题正在此处跟踪:https://github.com/firebase/firebase-ios-sdk/issues/2283 感谢 Igor

Crashed: com.apple.main-thread
0  libsystem_kernel.dylib         0x207743df8 __abort_with_payload + 8
1  libsystem_kernel.dylib         0x20773d838 abort_with_payload_wrapper_internal + 100
2  libsystem_kernel.dylib         0x20773d7d4 abort_with_payload_wrapper_internal + 34
3  libobjc.A.dylib                0x206d7d4b4 _objc_fatalv(unsigned long long, unsigned long long, char const*, char*) + 112
4  libobjc.A.dylib                0x206d7d40c __objc_error + 42
5  libobjc.A.dylib                0x206d94af0 weak_entry_insert(weak_table_t*, weak_entry_t*) + 314
6  libobjc.A.dylib                0x206d95a60 objc_initWeak + 360
7  UIKitCore                      0x23457508c -[UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:] + 1628
8  UIKitCore                      0x234fcaff8 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 1240
9  UIKitCore                      0x234fbdfac __45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke + 156
10 Foundation                     0x20854d51c -[NSISEngine withBehaviors:performModifications:] + 108
11 UIKitCore                      0x234fbde90 -[UIView(Hierarchy) _postMovedFromSuperview:] + 784
12 UIKitCore                      0x234fcdbb8 -[UIView(Internal) _addSubview:positioned:relativeTo:] + 1740
13 UIKitCore                      0x234843290 -[_UIKBCompatInputView addSubview:] + 48
14 UIKitCore                      0x234845634 -[UICompatibilityInputViewController setInputMode:] + 980
15 CoreFoundation                 0x207b1cd14 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 20
16 CoreFoundation                 0x207b1cce0 ___CFXRegistrationPost_block_invoke + 64
17 CoreFoundation                 0x207b1c1d0 _CFXRegistrationPost + 392
18 CoreFoundation                 0x207b1be7c ___CFXNotificationPost_block_invoke + 96
19 CoreFoundation                 0x207a941c0 -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1404
20 CoreFoundation                 0x207b1b908 _CFXNotificationPost + 696
21 Foundation                     0x20852aeb0 -[NSNotificationCenter postNotificationName:object:userInfo:] + 68
22 UIKitCore                      0x234956920 -[UIKeyboardImpl _setKeyboardInputMode:userInitiated:updateIndicator:force:executionContext:] + 1108
23 UIKitCore                      0x2349564b0 -[UIKeyboardImpl setKeyboardInputMode:userInitiated:updateIndicator:executionContext:] + 112
24 UIKitCore                      0x2349a4460 -[UIKeyboardTaskEntry execute:] + 200
25 UIKitCore                      0x2349a2b70 -[UIKeyboardTaskQueue continueExecutionOnMainThread] + 384
26 UIKitCore                      0x2349a3280 -[UIKeyboardTaskQueue addAndReturnTask:] + 132
27 UIKitCore                      0x2349a37d0 -[UIKeyboardTaskQueue performSingleTask:] + 136
28 UIKitCore                      0x234956098 -[UIKeyboardImpl setInputMode:userInitiated:] + 116
29 UIKitCore                      0x234844e9c -[UICompatibilityInputViewController resetInputModeInMainThread] + 196
30 UIKitCore                      0x234846450 __51-[UICompatibilityInputViewController setInputMode:]_block_invoke.624 + 544
31 SafariServices                 0x21d216740 __107+[_SFAutomaticPasswordInputViewController inputViewControllerWithAutoFillContext:passwordRules:completion:]_block_invoke.29 + 104
32 libdispatch.dylib              0x2075e76c8 _dispatch_call_block_and_release + 24
33 libdispatch.dylib              0x2075e8484 _dispatch_client_callout + 16
34 libdispatch.dylib              0x2075949ec _dispatch_main_queue_callback_4CF$VARIANT$mp + 1068
35 CoreFoundation                 0x207b3e1bc __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12
36 CoreFoundation                 0x207b39084 __CFRunLoopRun + 1964
37 CoreFoundation                 0x207b385b8 CFRunLoopRunSpecific + 436
38 GraphicsServices               0x209dac584 GSEventRunModal + 100
39 UIKitCore                      0x234b30bc8 UIApplicationMain + 212
40 MyApp                          0x102f15770 main (main.m:29)
41 libdyld.dylib                  0x2075f8b94 start + 4

更新:

Firebase 团队报告说它已在 5.19.0 中修复https://firebase.google.com/support/release-notes/ios#5.19.0

Performance Monitoring

Fixed a crash related to password auto-fill screen

我遇到过类似的崩溃。只有当我按以下顺序有 3 UITextFields 时才会发生:电子邮件、密码、密码。对于密码字段 属性 isSecureTextEntry 设置为 true。为了使其崩溃,我将焦点更改为密码字段之一,切换到主屏幕并返回到应用程序。有时在主屏幕和应用程序之间的第二次或第三次切换时发生。

所以,就我而言,原因是 Firebase/Performance pod。我已经删除它一段时间了——这修复了错误。

更新:Firebase 团队在 5.19.0 中修复了这个错误。只需更新您的 firebase pods.