Search code examples
iosswiftxcodeapp-store-connectcrash-reports

App Store crash report EXC_BREAKPOINT (SIGTRAP)


Below is the crash report downloaded from iTunes Connect, Apple guys says "We were unable to review your app as it crashed on launch".

i know 'EXC_BREAKPOINT (SIGTRAP)' means a non-optional type with a nil value or a failed forced type conversion, i checked the row 0, 1, 2 and 41 concerned about my app's property, new installed, and try updated from old version, all on real device, everything works fine, no crash happens. i've no idea where is the crash kicked?

it's very helpful you can give some me advice. thank you very much!!!

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x0000000101066d5c
Termination Signal: Trace/BPT trap: 5
Termination Reason: Namespace SIGNAL, Code 0x5
Terminating Process: exc handler [0]
Triggered by Thread:  0

Filtered syslog:
None found

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   Cloud                           0x0000000101066d5c specialized static ContentViewController.iphone.getter + 388444 (ContentViewController.swift:20)
1   Cloud                           0x0000000101049584 specialized PageViewController.init(coder:) + 267652 (PageViewController.swift:16)
2   Cloud                           0x000000010104657c @objc PageViewController.init(coder:) + 255356 (PageViewController.swift:0)
3   UIKit                           0x000000018acee8bc -[UIClassSwapper initWithCoder:] + 248
4   UIKit                           0x000000018ae97588 UINibDecoderDecodeObjectForValue + 688
5   UIKit                           0x000000018ae972c0 -[UINibDecoder decodeObjectForKey:] + 104
6   UIKit                           0x000000018acee560 -[UIRuntimeConnection initWithCoder:] + 188
7   UIKit                           0x000000018ae97588 UINibDecoderDecodeObjectForValue + 688
8   UIKit                           0x000000018ae97700 UINibDecoderDecodeObjectForValue + 1064
9   UIKit                           0x000000018ae972c0 -[UINibDecoder decodeObjectForKey:] + 104
10  UIKit                           0x000000018aced8a0 -[UINib instantiateWithOwner:options:] + 1168
11  UIKit                           0x000000018b06a7f0 -[UIStoryboard instantiateViewControllerWithIdentifier:] + 196
12  UIKit                           0x000000018a9d08dc -[UIApplication _loadMainStoryboardFileNamed:bundle:] + 124
13  UIKit                           0x000000018a7d6cdc -[UIApplication _loadMainInterfaceFile] + 264
14  UIKit                           0x000000018a9cf5c0 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1420
15  UIKit                           0x000000018ac5d454 __111-[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:]_block_invoke + 800
16  UIKit                           0x000000018af2d1f0 +[_UICanvas _enqueuePostSettingUpdateTransactionBlock:] + 160
17  UIKit                           0x000000018ac5d0b8 -[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:] + 252
18  UIKit                           0x000000018ac5d928 -[__UICanvasLifecycleMonitor_Compatability activateEventsOnly:withContext:completion:] + 748
19  UIKit                           0x000000018b3c66e8 __82-[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:]_block_invoke + 260
20  UIKit                           0x000000018b3c658c -[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:] + 448
21  UIKit                           0x000000018b1429c0 __125-[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:]_block_invoke + 220
22  UIKit                           0x000000018b2d7fc8 _performActionsWithDelayForTransitionContext + 112
23  UIKit                           0x000000018b142870 -[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:] + 252
24  UIKit                           0x000000018af2c850 -[_UICanvas scene:didUpdateWithDiff:transitionContext:completion:] + 364
25  UIKit                           0x000000018a9cde28 -[UIApplication workspace:didCreateScene:withTransitionContext:completion:] + 540
26  UIKit                           0x000000018add16ec -[UIApplicationSceneClientAgent scene:didInitializeWithEvent:completion:] + 364
27  FrontBoardServices              0x00000001839f9768 -[FBSSceneImpl _didCreateWithTransitionContext:completion:] + 364
28  FrontBoardServices              0x0000000183a02070 __56-[FBSWorkspace client:handleCreateScene:withCompletion:]_block_invoke_2 + 224
29  libdispatch.dylib               0x0000000180cdd048 _dispatch_client_callout + 16
30  libdispatch.dylib               0x0000000180ce46c8 _dispatch_block_invoke_direct$VARIANT$mp + 288
31  FrontBoardServices              0x0000000183a2da04 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 36
32  FrontBoardServices              0x0000000183a2d6a8 -[FBSSerialQueue _performNext] + 404
33  FrontBoardServices              0x0000000183a2dc44 -[FBSSerialQueue _performNextFromRunLoopSource] + 56
34  CoreFoundation                  0x0000000181300358 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
35  CoreFoundation                  0x00000001813002d8 __CFRunLoopDoSource0 + 88
36  CoreFoundation                  0x00000001812ffb60 __CFRunLoopDoSources0 + 204
37  CoreFoundation                  0x00000001812fd738 __CFRunLoopRun + 1048
38  CoreFoundation                  0x000000018121e2d8 CFRunLoopRunSpecific + 436
39  GraphicsServices                0x00000001830aff84 GSEventRunModal + 100
40  UIKit                           0x000000018a7cb880 UIApplicationMain + 208
41  Cloud                           0x0000000101010e04 main + 36356 (SearchTableViewController.swift:13)
42  libdyld.dylib                   0x0000000180d4256c start + 4

the following is the code for static ContentViewController.iphone.getter:

defined in common.swift:

enum iPhone: CGFloat {
case iPhoneSE = 568
case iPhone = 667
case iPhonePlus = 736
case iPhoneX = 812

init!(_ rawValue: CGFloat) {
    self.init(rawValue: rawValue)
}

}

defined in ContentViewController.swift:

    static var iphone: iPhone {
    let sceneHeight: CGFloat = UIScreen.main.bounds.height

    if iPhone(sceneHeight) == .iPhoneSE {
        return .iPhoneSE
    } else if iPhone(sceneHeight) == .iPhone {
        return .iPhone
    } else if iPhone(sceneHeight) == .iPhonePlus {
        return .iPhonePlus
    } else {
       return .iPhoneX
    }
}

Solution

  • init!(_ rawValue: CGFloat) { self.init(rawValue: rawValue) }

    You use here force unwrapped init but you have cases where enum can return nil if no cases corresponds with the passed value. It can be iPad (768) or iPhone 4s (480). So you are unwrapping nil and system throws an exception.