Crashlytics threaded crashed บน iOS13 ที่สร้างด้วย Xcode11 เท่านั้น


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
คุณยังมีปัญหานี้หรือไม่
Anjula S.

คำตอบ:


9

ก่อนอื่นฉันขอแนะนำให้เปิด "ตัวตรวจสอบเธรดหลัก" ใน Xcode ไปที่ผลิตภัณฑ์ -> Scheme -> Edit scheme -> Diagnostics คุณควรเห็นหน้าต่างนี้ แท็บการวินิจฉัย อีกสิ่งหนึ่งที่คุณสามารถลองได้คือไปที่ส่วนเบรกพอยต์ใน Xcode และคลิกที่เครื่องหมาย + และเพิ่มเบรกพอยต์สัญลักษณ์ที่จะฟังในการโทรที่เฉพาะเจาะจงและคุณสามารถเพิ่มเงื่อนไขในการตรวจสอบว่ามันถูกเรียกว่าในหัวข้อหลัก

สัญลักษณ์เบรกพอยต์

หากคุณพบข้อบกพร่องของคุณในรหัสโปรดโพสต์ไว้ที่นี่เนื่องจากฉันประสบข้อผิดพลาดเช่นเดียวกับคุณในแอปของฉันดังนั้นนี่คือสิ่งที่ฉันได้ค้นพบข้อบกพร่อง หวังว่ามันจะช่วยคุณออก!


ฉันได้ลองคำแนะนำนี้แล้ว แต่น่าเสียดายที่ฉันไม่พบข้อผิดพลาด
bemul12

ปัญหาของฉันอยู่ในการอนุญาตในพื้นที่ (touch ID, ID ใบหน้า) ฉันได้นำเสนอตัวควบคุมมุมมองอื่นบนเธรดเบื้องหลัง คุณสามารถลองดูได้
Laurynas Letkauskas

หากฉันเข้าใจถูกต้องปัญหาของคุณจะถูกตรวจจับโดยตัวตรวจสอบเธรดหลักและคุณพบว่าอยู่ในส่วนคำเตือนรันไทม์ ฉันตรวจสอบกระแสข้อมูลจำนวนมากในแอพของฉันและฉันไม่ได้รับคำเตือนรันไทม์จากตัวตรวจสอบเธรดหลัก
bemul12

มันไม่ได้เป็นการปิดการรับรองความถูกต้อง จริง ๆ แล้วฉันเรียกวิธีผู้ร่วมประชุมจากการปิดบอกตัวควบคุมมุมมองว่าผู้ใช้รับรองความถูกต้องเริ่มสร้างหน้าจอหลักที่ดูเหมือนจะยกตัวอย่างแถบแท็บในขณะที่ยังคงอยู่บนเธรดพื้นหลังและเป็นที่ที่ตัวตรวจสอบเธรดหลัก ทำงานดังนั้นฉันขุดลงและพบว่าผู้ร่วมประชุมที่ถูกเรียกว่าไม่ได้อยู่ในหัวข้อหลักคือปัญหา
Laurynas Letkauskas

17

คุณเปิดใช้งานโฆษณา Google ในแอปของคุณหรือไม่ มันอาจเป็นข้อผิดพลาดในโฆษณาของ Google sdkหรือเป็นข้อบกพร่องในการใช้งาน WebKit SDK บน iOS 13 (เพราะฉันไม่สามารถแสดงความคิดเห็นดังนั้นฉันโพสต์สิ่งนี้เป็นคำตอบ)

การนำกลับมาใช้ใหม่ - การอ่านผ่านลิงก์ที่เชื่อมโยงข้างต้นโซลูชัน "เป็นทางการ" จากทีมโฆษณา Google ตั้งแต่วันที่ 19 พ.ย. 2562 คือการปรับเปลี่ยนโปรแกรมของแอพของคุณให้มีคีย์ / คู่ต่อไปนี้ใช้ 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 หรือไม่
own2pwn

2
ปัญหาเดียวกันที่นี่ ฉันยังคงรอการอัปเดตใหม่จาก Google ในรุ่นปัจจุบัน (7.52.0) ข้อผิดพลาดนี้ยังคงมีอยู่
fdlr

1
@ อาจเป็นไปได้ใช่ นักพัฒนาซอฟต์แวร์รายหนึ่งรายงานการสูญเสียรายได้โดยอ้างว่า "อัตราการแสดง" ลดลง ~ 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/google-admob-ads-sdk/…แต่ทราบว่ามีปัญหาหนึ่งที่ทราบแล้ว: โฆษณาที่มีเสียงจะเล่นด้วยเสียงเสมอ ของสวิตช์สั่นที่เปิดอยู่
262Hz

6

ปัญหานี้อาจเกิดจาก Google Ads SDK (7.5XX + iOS13) พบกระทู้นี้นี้

นักพัฒนาพยายามใช้ค่าคู่คีย์ด้านล่างในInfo.plistไฟล์ตามที่แนะนำโดยทีมโฆษณา Google

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

ความผิดพลาดที่ลดลงนี้ลดลง แต่นี่เป็นปัญหาการตรึงอีกครั้ง (การใช้ CPU 100%)

เมื่อเร็ว ๆ นี้ Google เปิดตัว 7.55.0 ด้วยหมายเหตุ:

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

ดังนั้นพยายามอัปเดต SDK โฆษณาของ Google เป็น 7.55.0


3

เพื่อแสดงการติดตามสแต็กสำหรับเธรดของคุณ Crashlytics จำเป็นต้องเรียกใช้โค้ดโพสต์ผิดพลาด เนื่องจากรหัสนี้กำลังทำงานบนหนึ่งในกระทู้ของแอปของคุณ Crashlytics จะจับข้อมูลเกี่ยวกับการดำเนินการของตัวเองเป็นส่วนหนึ่งของกระบวนการนี้เสมอ คุณจะเห็นเธรดที่เรียกใช้ฟังก์ชัน“ CLSProcessRecordAllThreads” เสมอ ในความเป็นจริงคุณจะเห็นมันมากกว่าหนึ่งครั้งเนื่องจากการเพิ่มประสิทธิภาพของคอมไพเลอร์ที่เรียกว่าอินไลน์ ป้อนคำอธิบายรูปภาพที่นี่ ข้อยกเว้นเพิ่มความซับซ้อนอีกเล็กน้อย เมื่อข้อยกเว้น Objective-C หรือ C ++ หายไป Crashlytics จะบันทึกข้อมูลบางอย่างเกี่ยวกับมันก่อนที่แอปจะได้รับอนุญาตให้ยกเลิก เมื่อสิ่งนี้เกิดขึ้นฟังก์ชัน CLSProcessRecordAllThreads ต้องถูกรันบนเธรดที่มีข้อยกเว้น ซึ่งหมายความว่าในกรณีของข้อยกเว้นเธรด“ crashing” จะดูเหมือนว่ากำลังรันโค้ด Crashlytics เสมอ นี่เป็นเรื่องปกติและเป็นเพียงสิ่งประดิษฐ์ของวิธีการที่เราจับภาพและนำเสนอการติดตามสแต็กในเวลาที่มีข้อยกเว้น


1
เนื่องจาก "เธรดการขัดข้องจะดูเหมือนว่ากำลังรันโค้ด Crashlytics เสมอ" คุณจะทราบได้อย่างไรว่าเธรดการขัดข้องที่แท้จริงคืออะไร
wilc0
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.