swift – How do you deal with cryptic symbolicated crashes in your iOS apps?

swift – How do you deal with cryptic symbolicated crashes in your iOS apps?


There are 1–3 crashes in my app that appear to be uncommon race circumstances. They occurred to date to a couple a whole bunch customers of mine. I can’t reproduce them and don’t have any clues by any means about their trigger. For instance:

    Crashed: com.apple.main-thread
0  libsystem_kernel.dylib         0xc2d4 __pthread_kill + 8
1  libsystem_pthread.dylib        0x859c pthread_kill + 268
2  libsystem_c.dylib              0x77b08 abort + 128
3  libswiftCore.dylib             0x3ccae4 swift::fatalError(unsigned int, char const*, ...) + 134
4  libswiftCore.dylib             0x3ccb04 swift::warningv(unsigned int, char const*, char*) + 30
5  libswiftCore.dylib             0x3c66cc tryCastFromClassToObjCBridgeable(swift::OpaqueValue*, swift::TargetMetadata<swift::InProcess> const*, swift::OpaqueValue*, swift::TargetMetadata<swift::InProcess> const*, swift::TargetMetadata<swift::InProcess> const*&, swift::TargetMetadata<swift::InProcess> const*&, bool, bool) + 254
6  libswiftCore.dylib             0x3c8408 tryCastToObjectiveCClass(swift::OpaqueValue*, swift::TargetMetadata<swift::InProcess> const*, swift::OpaqueValue*, swift::TargetMetadata<swift::InProcess> const*, swift::TargetMetadata<swift::InProcess> const*&, swift::TargetMetadata<swift::InProcess> const*&, bool, bool) + 88
7  libswiftCore.dylib             0x3c5d30 tryCast(swift::OpaqueValue*, swift::TargetMetadata<swift::InProcess> const*, swift::OpaqueValue*, swift::TargetMetadata<swift::InProcess> const*, swift::TargetMetadata<swift::InProcess> const*&, swift::TargetMetadata<swift::InProcess> const*&, bool, bool) + 992
8  libswiftCore.dylib             0x3c57dc swift_dynamicCast + 208
9  SwiftUI                        0x91540 PlatformViewHost.updateNestedHosts(_:colorSchemeChanged:) + 332
10 SwiftUI                        0x91110 PlatformViewHost.updateEnvironment(_:viewPhase:) + 272
11 SwiftUI                        0x27f148 specialised PlatformViewHost.init(_:host:atmosphere:viewPhase:importer:) + 1288
12 SwiftUI                        0x27ec28 specialised PlatformViewHost.__allocating_init(_:host:atmosphere:viewPhase:importer:) + 92
13 SwiftUI                        0x27eb88 closure #1 in closure #1 in closure #4 in closure #1 in PlatformViewChild.updateValue() + 504
14 SwiftUI                        0x27e984 partial apply for closure #1 in closure #1 in closure #4 in closure #1 in PlatformViewChild.updateValue() + 48
15 SwiftUI                        0x27e90c RepresentableContextValues.asCurrent<A>(do:) + 188
16 SwiftUI                        0x27e804 closure #1 in closure #4 in closure #1 in PlatformViewChild.updateValue() + 176
17 SwiftUI                        0x27e72c partial apply for closure #4 in closure #1 in PlatformViewChild.updateValue() + 128
18 SwiftUICore                    0x1640c partial apply for closure #1 in _withObservation<A>(do:) + 48
19 SwiftUICore                    0x14148 closure #1 in _withObservation<A>(do:)partial apply + 16
20 SwiftUICore                    0x128c8 withUnsafeMutablePointer<A, B, C>(to:_:) + 160
21 SwiftUICore                    0x7c08c StatefulRule.withObservation<A>(do:) + 872
22 SwiftUICore                    0x7bb8c StatefulRule.withObservation<A>(do:) + 72
23 SwiftUI                        0x8f374 closure #1 in PlatformViewChild.updateValue() + 3312
24 SwiftUICore                    0x204360 Signpost.traceInterval<A>(object:_:_:closure:) + 452
25 SwiftUI                        0x791ac PlatformViewChild.updateValue() + 176
26 SwiftUI                        0x78414 partial apply for implicit closure #1 in closure #1 in closure #1 in Attribute.init<A>(_:) + 32
27 AttributeGraph                 0xccac AG::Graph::UpdateStack::replace() + 540
28 AttributeGraph                 0xc870 AG::Graph::update_attribute(AG::information::ptr<AG::Node>, unsigned int) + 424
29 AttributeGraph                 0x3bf4 AG::Graph::input_value_ref_slow(AG::information::ptr<AG::Node>, AG::AttributeID, unsigned int, unsigned int, AGSwiftMetadata const*, unsigned char&, lengthy) + 720
30 AttributeGraph                 0x3794 AGGraphGetValue + 228
31 SwiftUI                        0x20b90 InvalidatableLeafLayoutComputer.view.getter + 60
32 SwiftUI                        0x363878 RemoteSheetContainerVCWriter.worth.getter + 404
33 SwiftUI                        0x360e0 implicit closure #1 in closure #1 in closure #1 in Attribute.init<A>(_:) + 324
34 AttributeGraph                 0xccac AG::Graph::UpdateStack::replace() + 540
35 AttributeGraph                 0xc870 AG::Graph::update_attribute(AG::information::ptr<AG::Node>, unsigned int) + 424
36 AttributeGraph                 0x3bf4 AG::Graph::input_value_ref_slow(AG::information::ptr<AG::Node>, AG::AttributeID, unsigned int, unsigned int, AGSwiftMetadata const*, unsigned char&, lengthy) + 720
37 AttributeGraph                 0x3794 AGGraphGetValue + 228
38 SwiftUICore                    0xae908 closure #1 in PairPreferenceCombiner.worth.getter + 84
39 SwiftUI                        0x1ade44 protocol witness for static PreferenceKey.scale back(worth:nextValue:) in conformance RemoteSheetContainerVCKey + 160
40 SwiftUICore                    0xada80 PairPreferenceCombiner.worth.getter + 216
41 SwiftUICore                    0x4cb0 implicit closure #1 in closure #1 in closure #1 in Attribute.init<A>(_:) + 324
42 AttributeGraph                 0xccac AG::Graph::UpdateStack::replace() + 540
43 AttributeGraph                 0xc870 AG::Graph::update_attribute(AG::information::ptr<AG::Node>, unsigned int) + 424
44 AttributeGraph                 0xbfd4 AG::Graph::value_ref(AG::AttributeID, unsigned int, AGSwiftMetadata const*, unsigned char&) + 288
45 AttributeGraph                 0x37e4 AGGraphGetValue + 308
46 SwiftUI                        0x31d664 closure #1 in PresentationHostingController._remoteSheet.getter + 96
47 SwiftUI                        0x31d5fc partial apply for closure #1 in PresentationHostingController._remoteSheet.getter + 20
48 SwiftUICore                    0x79184 closure #1 in static Replace.guarantee<A>(_:) + 56
49 SwiftUICore                    0x79108 static Replace.guarantee<A>(_:) + 100
50 SwiftUI                        0x31d860 PresentationHostingController._remoteSheet.getter + 264
51 SwiftUI                        0x31d730 @objc PresentationHostingController._remoteSheet.getter + 28
52 UIKitCore                      0x356b20 -[UISheetPresentationController _expectedRemoteSheet] + 244
53 UIKitCore                      0x3553b0 -[UISheetPresentationController presentationTransitionWillBegin] + 1124
54 UIKitCore                      0x36d4cc -[_UIFormSheetPresentationController presentationTransitionWillBegin] + 56
55 UIKitCore                      0x36bd5c __80-[UIPresentationController _initViewHierarchyForPresentationSuperview:inWindow:]_block_invoke + 2136
56 UIKitCore                      0x3111c4 __77-[UIPresentationController runTransitionForCurrentStateAnimated:handoffData:]_block_invoke_3 + 304
57 UIKitCore                      0x9fd40 -[_UIAfterCACommitBlock run] + 72
58 UIKitCore                      0x9f894 -[_UIAfterCACommitQueue flush] + 164
59 UIKitCore                      0x9f7a8 _runAfterCACommitDeferredBlocks + 260
60 UIKitCore                      0x9f4c8 _cleanUpAfterCAFlushAndRunDeferredBlocks + 80
61 UIKitCore                      0x9f3d8 _UIApplicationFlushCATransaction + 72
62 UIKitCore                      0x9c890 __setupUpdateSequence_block_invoke_2 + 332
63 UIKitCore                      0x9c704 _UIUpdateSequenceRun + 84
64 UIKitCore                      0x9f034 schedulerStepScheduledMainSection + 172
65 UIKitCore                      0x9cc50 runloopSourceCallback + 92
66 CoreFoundation                 0x73f3c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
67 CoreFoundation                 0x73ed0 __CFRunLoopDoSource0 + 176
68 CoreFoundation                 0x76b30 __CFRunLoopDoSources0 + 244
69 CoreFoundation                 0x75d2c __CFRunLoopRun + 840
70 CoreFoundation                 0xc8274 CFRunLoopRunSpecific + 588
71 GraphicsServices               0x14c0 GSEventRunModal + 164
72 UIKitCore                      0x3ee77c -[UIApplication _run] + 816
73 UIKitCore                      0x14e64 UIApplicationMain + 340
74 SwiftUI                        0x292660 closure #1 in KitRendererCommon(_:) + 168
75 SwiftUI                        0x292590 runApp<A>(_:) + 100
76 SwiftUI                        0x292474 static App.important() + 180
77 MyApp                          0x19d82c important + 4335982636 (MyApp.swift:4335982636)
78 ???                            0x1adb84de8 (Lacking)

There’s no reference to any particular code of mine — no clues in any respect.

AFAIK, I’m following greatest practices, comparable to manipulating SwiftUI state solely on the principle thread, utilizing actors the place acceptable, and so forth.

What’s the proper technique to analyze and handle such errors? How does Apple count on us to deal with them? They appear utterly inactionable.

author avatar
roosho Senior Engineer (Technical Services)
I am Rakib Raihan RooSho, Jack of all IT Trades. You got it right. Good for nothing. I try a lot of things and fail more than that. That's how I learn. Whenever I succeed, I note that in my cookbook. Eventually, that became my blog. 
rooshohttps://www.roosho.com
I am Rakib Raihan RooSho, Jack of all IT Trades. You got it right. Good for nothing. I try a lot of things and fail more than that. That's how I learn. Whenever I succeed, I note that in my cookbook. Eventually, that became my blog. 

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here


Latest Articles

author avatar
roosho Senior Engineer (Technical Services)
I am Rakib Raihan RooSho, Jack of all IT Trades. You got it right. Good for nothing. I try a lot of things and fail more than that. That's how I learn. Whenever I succeed, I note that in my cookbook. Eventually, that became my blog.