【问题标题】:Crash in UIKitCore [UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:] iOS 12 onlyUIKitCore [UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:] 仅在 iOS 12 中崩溃
【发布时间】:2019-03-23 13:25:32
【问题描述】:

我收到了大量报告给 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

【问题讨论】:

  • 我们也有同样的崩溃。仅限 iOS12。经过一番研究,我找到了一种重现它的方法。我们的应用在同一个视图上有多个文本字段,还有一个自定义 inputAccessory 视图,不确定这是否相关。用一些文本填充 textview 后,长按将焦点从一个 textview 更改为另一个以触发循环。日志显示: > objc[4531]: 无法形成对 UICompatibilityInputViewController 类的实例 (0x11bf6a4c0) 的弱引用。该对象可能被过度释放,或者正在被释放。希望这会有所帮助!
  • @Loadex 您能否更详细地描述步骤,或者可能录制视频。努力重现崩溃
  • 当用户单击带有 textContentType == .newPassword 的 UITextField 时,会出现此堆栈跟踪。例如在注册屏幕上
  • @IgorPalaguta 步骤如下: 1. 在姓名和电子邮件字段中输入数据 2. 点击密码字段,从 iOS 键盘选择“使用强密码” 3. 点击重复密码字段。 iOS 也会自动填充它 4. 点击其他字段之一(姓名或电子邮件)以关注它们 5. 长按密码或重复密码(以没有焦点的为准)直到放大镜出现 6. 从 4 重复

标签: ios ios12 safariservices


【解决方案1】:

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

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

更新:Firebase 团队在 5.19.0 中修复了此错误。只需更新您的 firebase pod。

【讨论】:

  • 我们使用 Firebase/Performance,但我们遇到了这个崩溃,@Gomfucius 你用了吗?
  • @IgorPalaguta 是的,我们确实使用它。感谢您创建该问题。
  • 删除 Firebase/Performance 库后崩溃真的消失了
  • 我们使用了 firebase 性能并且也有这个崩溃。我已经能够重现它,但并非始终如一。
猜你喜欢
  • 1970-01-01
  • 2012-02-05
  • 2019-03-08
  • 2019-05-15
  • 2019-03-08
  • 1970-01-01
  • 1970-01-01
  • 2020-08-04
  • 1970-01-01
相关资源
最近更新 更多