Crashlytics线程仅在使用Xcode11构建的iOS13上崩溃


18

我的应用仅在具有以下调用堆栈的iOS13上崩溃:

#57. Crashed: com.twitter.crashlytics.ios.exception
0  myapp                          0x105d6d494 CLSProcessRecordAllThreads + 376 (CLSProcess.c:376)
1  myapp                          0x105d6d87c CLSProcessRecordAllThreads + 407 (CLSProcess.c:407)
2  myapp                          0x105d5d58c CLSHandler + 26 (CLSHandler.m:26)
3  myapp                          0x105d6bab4 __CLSExceptionRecord_block_invoke + 198 (CLSException.mm:198)
4  libdispatch.dylib              0x1be5c100c _dispatch_client_callout + 20
5  libdispatch.dylib              0x1be5cd804 _dispatch_lane_barrier_sync_invoke_and_complete + 60
6  myapp                          0x105d6b55c CLSExceptionRecord + 205 (CLSException.mm:205)
7  myapp                          0x105d6b390 CLSExceptionRecordNSException + 102 (CLSException.mm:102)
8  myapp                          0x105d6afb4 CLSTerminateHandler() + 258 (CLSException.mm:258)
9  libc++abi.dylib                0x1be6d9634 std::__terminate(void (*)()) + 20
10 libc++abi.dylib                0x1be6d8f58 __cxa_get_exception_ptr + 34
11 libc++abi.dylib                0x1be6d8f10 __cxxabiv1::exception_cleanup_func(_Unwind_Reason_Code, _Unwind_Exception*) + 126
12 libobjc.A.dylib                0x1be6341f8 _objc_exception_destructor(void*) + 362
13 Foundation                     0x1bee05434 -[NSISEngine tryToOptimizeReturningMutuallyExclusiveConstraints] + 322
14 Foundation                     0x1bebfeb94 -[NSISEngine _optimizeWithoutRebuilding] + 72
15 Foundation                     0x1bebfeaa8 -[NSISEngine optimize] + 116
16 Foundation                     0x1bebfe718 -[NSISEngine performPendingChangeNotifications] + 116
17 UIKitCore                      0x1c2e447c4 -[UIView(Hierarchy) layoutSubviews] + 316
18 UIKitCore                      0x1c23c6948 -[UIButton layoutSubviews] + 596
19 UIKitCore                      0x1c2e57abc -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 2156
20 libobjc.A.dylib                0x1be62faf0 -[NSObject performSelector:withObject:] + 68
21 QuartzCore                     0x1c53f60f4 -[CALayer layoutSublayers] + 292
22 QuartzCore                     0x1c53f63fc CA::Layer::layout_if_needed(CA::Transaction*) + 484
23 QuartzCore                     0x1c5409964 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 140
24 QuartzCore                     0x1c534ec1c CA::Context::commit_transaction(CA::Transaction*, double) + 308
25 QuartzCore                     0x1c5379bd8 CA::Transaction::commit() + 684
26 QuartzCore                     0x1c537abc0 CA::Transaction::release_thread(void*) + 232
27 libsystem_pthread.dylib        0x1be62c3c0 _pthread_tsd_cleanup + 584
28 libsystem_pthread.dylib        0x1be624dbc _pthread_exit + 84
29 libsystem_pthread.dylib        0x1be626de8 _pthread_wqthread_legacy_worker_wrap + 98
30 libsystem_pthread.dylib        0x1be626b30 _pthread_wqthread + 424
31 libsystem_pthread.dylib        0x1be62cc78 start_wqthread + 8

--

Fatal Exception: NSInternalInconsistencyException
Modifications to the layout engine must not be performed from a background thread after it has been accessed from the main thread.
0  CoreFoundation                 0x1be919c30 __exceptionPreprocess
1  libobjc.A.dylib                0x1be6340c8 objc_exception_throw
2  Foundation                     0x1bee05434 -[NSISEngine tryToOptimizeReturningMutuallyExclusiveConstraints]
3  Foundation                     0x1bebfeb94 -[NSISEngine _optimizeWithoutRebuilding]
4  Foundation                     0x1bebfeaa8 -[NSISEngine optimize]
5  Foundation                     0x1bebfe718 -[NSISEngine performPendingChangeNotifications]
6  UIKitCore                      0x1c2e447c4 -[UIView(Hierarchy) layoutSubviews]
7  UIKitCore                      0x1c23c6948 -[UIButton layoutSubviews]
8  UIKitCore                      0x1c2e57abc -[UIView(CALayerDelegate) layoutSublayersOfLayer:]
9  libobjc.A.dylib                0x1be62faf0 -[NSObject performSelector:withObject:]
10 QuartzCore                     0x1c53f60f4 -[CALayer layoutSublayers]
11 QuartzCore                     0x1c53f63fc CA::Layer::layout_if_needed(CA::Transaction*)
12 QuartzCore                     0x1c5409964 CA::Layer::layout_and_display_if_needed(CA::Transaction*)
13 QuartzCore                     0x1c534ec1c CA::Context::commit_transaction(CA::Transaction*, double)
14 QuartzCore                     0x1c5379bd8 CA::Transaction::commit()
15 QuartzCore                     0x1c537abc0 CA::Transaction::release_thread(void*)
16 libsystem_pthread.dylib        0x1be62c3c0 _pthread_tsd_cleanup
17 libsystem_pthread.dylib        0x1be624dbc _pthread_exit
18 libsystem_pthread.dylib        0x1be626de8 _pthread_wqthread_legacy_worker_wrap
19 libsystem_pthread.dylib        0x1be626b30 _pthread_wqthread
20 libsystem_pthread.dylib        0x1be62cc78 start_wqthread

我绝对不知道,这个问题会发生什么,我该如何繁殖。它随机崩溃。我在项目中使用Crashlytics v3.14。有人面对同样的问题吗?


1
您还有问题

Answers:


9

首先,我建议打开Xcode中的“主线程检查器”,转到“产品”->“方案”->“编辑方案”->“诊断”,您应该看到此窗口诊断标签 您可以尝试做的另一件事是转到“断点”部分。 Xcode并单击+号并添加一个符号断点,该断点将侦听特定的调用,您可以向其添加条件以检查它是否在主线程上被调用。

象征性的断点

如果您碰巧在代码中找到错误,请在此处发布它,因为我在应用程序中遇到的崩溃与您相同,因此,这是我尽力找出的错误。希望它可以帮助您!


我已经尝试过此建议,但不幸的是我没有抓住坠机事故。
bemul12

我的问题是本地授权(触摸ID,人脸ID),我在后台线程上显示了另一个视图控制器,并且我的应用仅在随机使用了大约2分钟后才崩溃。您可以尝试检查一下
Laurynas Letkauskas 19-10-29

如果我理解正确,则您的问题被主线程检查器发现,您在运行时警告部分下找到了它。我在应用程序中检查了很多流程,但主线程检查器未收到运行时警告。
bemul12

它不完全是在身份验证的关闭中。我实际上是从闭包中调用委托方法,告诉视图控制器用户已通过身份验证,开始构建主屏幕,似乎在仍在后台线程上时实例化了一个标签栏,这就是主线程检查器的位置工作了,所以我进行了
深入挖掘

17

您的应用程式中启用了Google广告吗?然后,它可能是Google ads sdk中的错误,也可能是iOS 13上的WebKit SDK实现中的错误。(对不起,我无法发表评论,因此我将其发布为答案)

带-仔细阅读以上链接的内容,截至2019年11月19日,Google Ads团队的“官方”解决方案是修改您应用的plist,使其包含以下密钥/对,以使用wkwebview而非uiwebview。

<key>gad_preferred_webview</key>
<string>wkwebview</string>

来源:https//groups.google.com/forum/#!category-topic / google-admob-ads- sdk / ios / I4EEWrPPbSc


谢谢你的回答。我的应用程序中没有Google广告,但是我内部有一个UIWebView,但是UIWebView是UIKit而不是WebKit的一部分。
bemul12

您使用UIWebView还是WKWebview?
own2pwn19年

2
这里同样的问题。我仍在等待Google的新更新。在当前版本(7.52.0)中,此错误仍然存​​在。
fdlr

1
@nab可能,是的。一位开发商上报的收入损失,理由是“作秀率”掉线〜10%groups.google.com/d/msg/google-admob-ads-sdk/PuHOKMX1mVI/... 而在“秀率”百分比另有报道下降:群体.google.com / d / msg / google-admob-ads-sdk / PuHOKMX1mVI /…
262Hz,

1
这是Google的“官方”解决方案: groups.google.com/forum/#!category-topic/ admob- ads- sdk/…但请注意,存在一个已知问题:无论是否有声音,广告都会播放声音振动开关处于打开状态。
262Hz,

6

这个问题可能是由于找到了这个主题的 Google ads SDK(7.5XX + iOS13)所致。

开发人员尝试按照Info.plistGoogle Ads团队的建议在文件中使用以下密钥对值。

<key>gad_preferred_webview</key>
<string>wkwebview</string>

减少了崩溃,但这又带来了另一个冻结问题(100%CPU使用率)。

Google最近发布了带有注释的7.55.0:

Removed all references to UIWebView. UIWebView is no longer supported.

因此请尝试将Google ads SDK更新为 7.55.0


3

为了显示线程的堆栈跟踪,Crashlytics需要在崩溃后运行一些代码。因为此代码是在您的应用程序的一个线程上执行的,所以Crashlytics始终会在此过程中捕获有关其自身执行的信息。您将始终看到执行“ CLSProcessRecordAllThreads”功能的线程。实际上,由于称为内联的编译器优化,您会多次看到它。 在此处输入图片说明 异常增加了额外的复杂性。当没有捕获到Objective-C或C ++异常时,Crashlytics会在允许终止应用程序之前记录有关它的一些信息。发生这种情况时,必须在引发异常的线程上运行CLSProcessRecordAllThreads函数。这意味着,在发生异常的情况下,“崩溃”线程将始终看起来像正在运行Crashlytics代码。这是正常现象,并且只是我们在异常情况下如何捕获和呈现堆栈跟踪的人工产物。


1
由于“崩溃线程将始终看起来像正在运行Crashlytics代码”,因此您如何确定实际崩溃线程是什么?
wilc0
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.