Chuỗi sự cố chỉ bị sập trên iOS13 được xây dựng với Xcode11


18

Ứng dụng của tôi bị sập chỉ trên iOS13 với ngăn xếp cuộc gọi sau:

#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

Tôi hoàn toàn không có ý tưởng nào, điều gì có thể xảy ra vấn đề này và làm thế nào tôi có thể tái tạo. Nó gặp sự cố ngẫu nhiên. Tôi sử dụng Crashlytics v3.14 trong dự án của mình. Có ai phải đối mặt với cùng một vấn đề?


1
Bạn có còn gặp vấn đề này không
Anjula S.

Câu trả lời:


9

Trước hết tôi khuyên bạn nên bật "Trình kiểm tra luồng chính", trong Xcode, đi đến Sản phẩm -> Lược đồ -> Chỉnh sửa lược đồ -> Chẩn đoán, bạn sẽ thấy cửa sổ này Tab chẩn đoán Một điều khác bạn có thể thử là vào phần điểm dừng của bạn trong Xcode và nhấp vào dấu + và thêm một điểm dừng tượng trưng, ​​sẽ lắng nghe một cuộc gọi cụ thể và bạn có thể thêm một điều kiện để kiểm tra xem nó có được gọi trên luồng chính hay không.

Một điểm dừng tượng trưng

Nếu bạn tình cờ tìm thấy lỗi của mình trong mã, xin vui lòng đăng nó ở đây, vì tôi đang gặp sự cố tương tự như bạn trong ứng dụng của mình, vì vậy đây là khi tôi tìm hiểu lỗi. Hy vọng nó giúp được bạn!


Tôi đã thử đề xuất này, nhưng tiếc là tôi đã không gặp sự cố.
bemul12

Vấn đề của tôi là về ủy quyền cục bộ (ID cảm ứng, ID khuôn mặt), tôi đã trình bày một bộ điều khiển xem khác trên một luồng nền và ứng dụng của tôi bị sập chỉ sau khi sử dụng ứng dụng trong khoảng 2 phút một cách ngẫu nhiên. Bạn có thể thử kiểm tra xem
Laurynas Letkauskas

Nếu tôi hiểu chính xác, vấn đề của bạn đã bị trình kiểm tra luồng chính bắt gặp và bạn đã tìm thấy nó trong phần cảnh báo thời gian chạy. Tôi đã kiểm tra rất nhiều luồng trong ứng dụng của mình và tôi không nhận được cảnh báo thời gian chạy bởi trình kiểm tra luồng chính.
bemul12

Nó không chính xác trong việc đóng xác thực. Tôi thực sự đã gọi một phương thức ủy nhiệm từ bao đóng, nói với bộ điều khiển xem rằng người dùng được xác thực, bắt đầu xây dựng màn hình chính, dường như khởi tạo một thanh tab trong khi vẫn ở trên luồng nền và đó là nơi trình kiểm tra luồng chính đã làm việc, vì vậy tôi đã đào xuống và phát hiện ra rằng đại biểu không được gọi là chủ đề chính là vấn đề
Laurynas Letkauskas

17

Bạn có bật quảng cáo google trong ứng dụng của mình không? Sau đó, nó có thể là một lỗi trong sdk quảng cáo của Google hoặc là một lỗi trong quá trình triển khai SDK WebKit trên iOS 13. (vì tôi không thể nhận xét, vì vậy tôi đăng bài này dưới dạng câu trả lời)

Giải quyết vấn đề này - Đọc qua chủ đề được liên kết ở trên, giải pháp "chính thức" từ nhóm Quảng cáo Google kể từ ngày 19 tháng 11 năm 2019 là sửa đổi danh sách ứng dụng của bạn để bao gồm khóa / cặp sau để sử dụng wkwebview thay vì uiwebview.

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

Nguồn: https://groups.google.com/forum/#!carget-topic/google-admob-ads-sdk/ios/I4EEWrPPbSc


Cảm ơn câu trả lời của bạn. Tôi không có quảng cáo Google trong ứng dụng của mình, nhưng tôi có UIWebView bên trong nó, nhưng UIWebView là một phần của UIKit, không phải WebKit.
bemul12

Bạn có sử dụng UIWebView hoặc WKWebview không?
own2pwn

2
Vấn đề tương tự ở đây. Tôi vẫn đang chờ đợi bản cập nhật mới của Google. Trong phiên bản hiện tại (7.52.0) lỗi này vẫn tồn tại.
fdlr

1
@nab Có thể, vâng. Một nhà phát triển báo cáo mất doanh thu, với lý do rằng "tỷ lệ hiển thị" rớt ~ 10% groups.google.com/d/msg/google-admob-ads-sdk/PuHOKMX1mVI/... Và một giảm được báo cáo trong "tỷ lệ hiển thị" phần trăm: nhóm .google.com / d / dir / google-admob-ads-sdk / PuHOKMX1mVI / Nhận
262Hz

1
Đây là giải pháp "chính thức" từ Google: Groups.google.com/forum/#!carget-topic/google-admob-ads-sdk/ mẹo nhưng lưu ý có một vấn đề đã biết: quảng cáo có âm thanh sẽ LUÔN phát âm thanh, bất kể của công tắc rung đang bật.
262Hz

6

Vấn đề này có thể là do SDK quảng cáo Google (7.5XX + iOS13), đã tìm thấy chủ đề này .

Các nhà phát triển đã cố gắng sử dụng giá trị cặp khóa dưới đây trong Info.plisttệp theo đề xuất của nhóm Quảng cáo Google.

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

Điều này đã giảm sự cố nhưng điều này đang gây ra sự cố đóng băng khác (sử dụng 100% CPU).

Gần đây Google đã phát hành 7.55.0 kèm theo ghi chú:

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

vì vậy hãy thử cập nhật SDK quảng cáo Google lên 7.55.0


3

Để hiển thị dấu vết ngăn xếp cho các chủ đề của bạn, Crashlytics cần chạy một số mã sau sự cố. Vì mã này đang thực thi trên một trong các luồng của ứng dụng của bạn, Crashlytics luôn nắm bắt thông tin về việc thực thi của chính nó như là một phần của quy trình này. Bạn sẽ luôn thấy một luồng thực thi chức năng của CLSProcessRecord ALLThreads. Trên thực tế, bạn sẽ thấy nó nhiều hơn một lần, do tối ưu hóa trình biên dịch được gọi là nội tuyến. nhập mô tả hình ảnh ở đây Ngoại lệ thêm một chút phức tạp. Khi một ngoại lệ Objective-C hoặc C ++ không được phát hiện, Crashlytics ghi lại một số thông tin về nó trước khi ứng dụng được phép chấm dứt. Khi điều này xảy ra, hàm CLSProcessRecord ALLThreads phải được chạy trên luồng đã ném ngoại lệ. Điều này có nghĩa là trong trường hợp có ngoại lệ, luồng xử lý lỗi vụn vụn sẽ luôn trông giống như nó đang chạy mã Crashlytics. Điều này là bình thường và chỉ là một tạo tác về cách chúng ta nắm bắt và trình bày các dấu vết ngăn xếp tại thời điểm ngoại lệ.


1
Vì "luồng xử lý sự cố sẽ luôn trông giống như nó đang chạy mã Crashlytics", làm thế nào để bạn xác định được chuỗi sự cố thực sự là gì?
wilc0
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.