我在我的应用中间歇性地看到了以下崩溃。以下是崩溃的崩溃日志。我无法弄清楚这次崩溃的原因。如果有人能帮我解决这次事故背后的原因,我真的很感激。
崩溃日志:
异常类型:EXC_BREAKPOINT(SIGTRAP) 例外代码:0x0000000000000001,0x000000000000defe 由线程触发:5
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0:
0 libsystem_kernel.dylib 0x34515648 syscall_thread_switch + 8
1 libsystem_platform.dylib 0x345a2646 _OSSpinLockLockSlow$VARIANT$mp + 42
2 CFNetwork 0x25df2f7e _BrowserCancel(__CFNetServiceBrowser*) + 22
3 CoreFoundation 0x2631f804 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 12
4 CoreFoundation 0x2631ec16 __CFRunLoopDoSources0 + 218
5 CoreFoundation 0x2631d294 __CFRunLoopRun + 764
6 CoreFoundation 0x2626adac CFRunLoopRunSpecific + 472
7 CoreFoundation 0x2626abbe CFRunLoopRunInMode + 102
8 GraphicsServices 0x2d5dc04c GSEventRunModal + 132
9 UIKit 0x29836a2c UIApplicationMain + 1436
10 Xavier 0x000c85c4 0x6c000 + 378308
11 Xavier 0x000c8720 0x6c000 + 378656
12 libdyld.dylib 0x34463aac start + 0
Thread 1 name: Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0 libsystem_kernel.dylib 0x345152c8 kevent64 + 24
1 libdispatch.dylib 0x34437ec4 _dispatch_mgr_invoke + 276
2 libdispatch.dylib 0x34437bf6 _dispatch_mgr_thread$VARIANT$mp + 34
Thread 2 name: com.apple.CFSocket.private
Thread 2:
0 libsystem_kernel.dylib 0x3452908c __select + 20
1 CoreFoundation 0x2632354e __CFSocketManager + 486
2 libsystem_pthread.dylib 0x345a7e64 _pthread_body + 136
3 libsystem_pthread.dylib 0x345a7dd6 _pthread_start + 114
4 libsystem_pthread.dylib 0x345a5b80 thread_start + 4
Thread 3 name: com.apple.NSURLConnectionLoader
Thread 3:
0 libsystem_kernel.dylib 0x34515518 mach_msg_trap + 20
1 libsystem_kernel.dylib 0x3451530c mach_msg + 36
2 CoreFoundation 0x2631edc6 __CFRunLoopServiceMachPort + 142
3 CoreFoundation 0x2631d38c __CFRunLoopRun + 1012
4 CoreFoundation 0x2626adac CFRunLoopRunSpecific + 472
5 CoreFoundation 0x2626abbe CFRunLoopRunInMode + 102
6 CFNetwork 0x25e231fa +[NSURLConnection(Loader) _resourceLoadLoop:] + 482
7 Foundation 0x270671b6 __NSThread__main__ + 1114
8 libsystem_pthread.dylib 0x345a7e64 _pthread_body + 136
9 libsystem_pthread.dylib 0x345a7dd6 _pthread_start + 114
10 libsystem_pthread.dylib 0x345a5b80 thread_start + 4
Thread 4:
0 libsystem_kernel.dylib 0x34515518 mach_msg_trap + 20
1 libsystem_kernel.dylib 0x3451530c mach_msg + 36
2 CoreFoundation 0x2631edc6 __CFRunLoopServiceMachPort + 142
3 CoreFoundation 0x2631d38c __CFRunLoopRun + 1012
4 CoreFoundation 0x2626adac CFRunLoopRunSpecific + 472
5 CoreFoundation 0x262b46c6 CFRunLoopRun + 94
6 CoreMotion 0x26b6bb7a 0x26b2d000 + 256890
7 libsystem_pthread.dylib 0x345a7e64 _pthread_body + 136
8 libsystem_pthread.dylib 0x345a7dd6 _pthread_start + 114
9 libsystem_pthread.dylib 0x345a5b80 thread_start + 4
Thread 5 name: Dispatch queue: com.apple.MCSession.callbackQueue
Thread 5 Crashed:
0 libswiftCore.dylib 0x0049b69c 0x304000 + 1668764
1 Xavier 0x000d4af8 0x6c000 + 428792
2 Xavier 0x000d5008 0x6c000 + 430088
3 MultipeerConnectivity 0x2824ba26 __58-[MCSession syncHandleNetworkEvent:pid:freeEventWhenDone:]_block_invoke617 + 114
4 libdispatch.dylib 0x34428610 _dispatch_call_block_and_release + 8
5 libdispatch.dylib 0x34432714 _dispatch_queue_drain$VARIANT$mp + 944
6 libdispatch.dylib 0x344321e4 _dispatch_queue_invoke$VARIANT$mp + 80
7 libdispatch.dylib 0x34434156 _dispatch_root_queue_drain + 310
8 libdispatch.dylib 0x3443527a _dispatch_worker_thread3 + 102
9 libsystem_pthread.dylib 0x345a5e22 _pthread_wqthread + 666
10 libsystem_pthread.dylib 0x345a5b74 start_wqthread + 4
Thread 6:
0 libsystem_kernel.dylib 0x345299cc __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x345a5e9c _pthread_wqthread + 788
2 libsystem_pthread.dylib 0x345a5b74 start_wqthread + 4
Thread 7:
0 libsystem_kernel.dylib 0x345299cc __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x345a5e9c _pthread_wqthread + 788
2 libsystem_pthread.dylib 0x345a5b74 start_wqthread + 4
Thread 8:
0 libsystem_kernel.dylib 0x345299cc __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x345a5e9c _pthread_wqthread + 788
2 libsystem_pthread.dylib 0x345a5b74 start_wqthread + 4
Thread 9:
0 libsystem_kernel.dylib 0x345299cc __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x345a5e9c _pthread_wqthread + 788
2 libsystem_pthread.dylib 0x345a5b74 start_wqthread + 4
Thread 10 name: com.apple.gamekitservices.gcksession.recvproc
Thread 10:
0 libsystem_kernel.dylib 0x3452908c __select + 20
1 MultipeerConnectivity 0x2825f8cc gckSessionRecvProc + 5252
2 libsystem_pthread.dylib 0x345a7e64 _pthread_body + 136
3 libsystem_pthread.dylib 0x345a7dd6 _pthread_start + 114
4 libsystem_pthread.dylib 0x345a5b80 thread_start + 4
Thread 11 name: com.apple.gamekitservices.gcksession.sendproc
Thread 11:
0 libsystem_kernel.dylib 0x3452908c __select + 20
1 MultipeerConnectivity 0x2825fe68 gckSessionSendProc + 268
2 libsystem_pthread.dylib 0x345a7e64 _pthread_body + 136
3 libsystem_pthread.dylib 0x345a7dd6 _pthread_start + 114
4 libsystem_pthread.dylib 0x345a5b80 thread_start + 4
Thread 12 name: com.apple.gamekitservices.eventcallback.eventcbproc
Thread 12:
0 libsystem_kernel.dylib 0x34528b38 __psynch_cvwait + 24
1 libsystem_pthread.dylib 0x345a73dc _pthread_cond_wait + 516
2 libsystem_pthread.dylib 0x345a82ac pthread_cond_wait + 36
3 MultipeerConnectivity 0x28279a4c EventCBProc + 76
4 libsystem_pthread.dylib 0x345a7e64 _pthread_body + 136
5 libsystem_pthread.dylib 0x345a7dd6 _pthread_start + 114
6 libsystem_pthread.dylib 0x345a5b80 thread_start + 4
Thread 13:
0 libsystem_kernel.dylib 0x34528b38 __psynch_cvwait + 24
1 libsystem_pthread.dylib 0x345a7416 _pthread_cond_wait + 574
2 libsystem_pthread.dylib 0x345a71d0 pthread_cond_timedwait_relative_np + 12
3 MultipeerConnectivity 0x2825de5c gckSessionRecvUDPPacketWithTimeout + 252
4 ICE 0x2d297234 ICERecvUDPPacketWithTimeout + 340
5 ICE 0x2d29eed2 RecvAndProcess + 310
6 ICE 0x2d2a2d1e ConnectivityCheckProc + 894
7 libsystem_pthread.dylib 0x345a7e64 _pthread_body + 136
8 libsystem_pthread.dylib 0x345a7dd6 _pthread_start + 114
9 libsystem_pthread.dylib 0x345a5b80 thread_start + 4
Thread 5 crashed with ARM Thread State (32-bit):
r0: 0x00000000 r1: 0x29f6be18 r2: 0x34e7b7e4 r3: 0x00000000
r4: 0x17de21f0 r5: 0x2d34620a r6: 0x17de60d0 r7: 0x00852bc8
r8: 0x17de60d0 r9: 0x18a6a4c0 r10: 0x36c40660 r11: 0x00000000
ip: 0x33ee2531 sp: 0x00852bc4 lr: 0x33ee25c3 pc: 0x0049b69c
cpsr: 0x60000030
我的断点在崩溃之前遇到了这一行:
let rootVC: UINavigationController = UIApplication.sharedApplication().keyWindow.rootViewController as UINavigationController
以下是包含此行的整个方法:
func session(session: MCSession!, didReceiveData data: NSData!, fromPeer peerID: MCPeerID!) {
//Check to see what kind of data is received
var dataReceived:AnyObject = NSKeyedUnarchiver.unarchiveObjectWithData(data)!;
if let newData = dataReceived as? String {
let rootVC: UINavigationController = UIApplication.sharedApplication().keyWindow.rootViewController as UINavigationController;
let topVC = rootVC.topViewController;
if let block = self.commandResolver[newData] {
block(topVC);
return;
} else {
println("Command resolver returns nil block");
}
} else if let newData = dataReceived as? NSDictionary {
let rootVC: UINavigationController = UIApplication.sharedApplication().keyWindow.rootViewController as UINavigationController;
let topVC = rootVC.topViewController as ViewController;
topVC.connected(true, withGroupName: newData["GroupName"] as String!);
} else {
println("Data is not a String");
}
}
我的window.rootViewController是UINavigationController,所以如果这是问题,它不应该是nil。可以吗?
我真的很感谢你的帮助。
答案 0 :(得分:1)
它在这个区块内的后台线程中崩溃:
3 MultipeerConnectivity 0x2824ba26 __58-[MCSession syncHandleNetworkEvent:pid:freeEventWhenDone:]_block_invoke617 + 114
UIKit通常不是线程安全的,而且只是#34;主线程",因此从后台线程调用UIApplication.sharedApplication().keyWindow.rootViewController
崩溃的事实并不令人惊讶。您可能希望将整个块发送回主线程。