2017-05-09 5 views
0

충돌로 인해 App Store 에의 제출이 거부되었습니다. 그러나 여러 하드웨어 장치 및 시뮬레이터에서 충돌을 재현 할 수 없습니다. 나는 크래시 로그를 상징했으며, 앱이 서버에서 데이터를 가져오고 사용자에게 "잠시 기다려주십시오 ..."라고 알리는 UIAlertController를 닫는 코드 영역에서 문제가 발생하고있는 것 같습니다. 아래는 충돌입니다. 로그. 원인을 찾아내는 데 도움이 될만한 아이디어가 있으면 감사하겠습니다.iOS 오류 로그 해석

Date/Time:   2017-05-06 00:27:06.7009 +0700 
Launch Time:   2017-05-06 00:26:43.8793 +0700 
OS Version:   iPhone OS 10.3.1 (14E304) 
Report Version:  104 

Exception Type: EXC_CRASH (SIGABRT) 
Exception Codes: 0x0000000000000000, 0x0000000000000000 
Exception Note: EXC_CORPSE_NOTIFY 
Triggered by Thread: 1 

Application Specific Information: 
abort() called 

Filtered syslog: 
None found 

Last Exception Backtrace: 
0 CoreFoundation     0x18c47efd8 __exceptionPreprocess + 124 
1 libobjc.A.dylib     0x18aee0538 objc_exception_throw + 56 
2 CoreFoundation     0x18c47eeac +[NSException raise:format:arguments:] + 104 
3 Foundation      0x18cf16710 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 112 
4 UIKit       0x192823454 -[UIApplication _cachedSystemAnimationFenceCreatingIfNecessary:] + 196 
5 UIKit       0x192823514 -[UIApplication _systemAnimationFenceCreatingIfNecessary:] + 24 
6 UIKit       0x19287c7a0 +[UIWindow _synchronizedDrawingFence] + 116 
7 UIKit       0x192a3a150 +[_UIKeyboardChangedInformation informationForKeyboardUp:withIAV:] + 104 
8 UIKit       0x192d338d4 -[_UIRemoteKeyboards prepareToMoveKeyboard:withIAV:showing:forScreen:] + 464 
9 UIKit       0x19266bc04 -[UIPeripheralHost(UIKitInternal) setInputViews:animationStyle:] + 820 
10 UIKit       0x192688cf4 -[UIPeripheralHost(UIKitInternal) _restoreInputViewsWithId:animated:] + 584 
11 UIKit       0x19291bd64 -[UIViewController _restoreInputViewsForPresentation] + 280 
12 UIKit       0x1928f6e3c -[UIPresentationController runTransitionForCurrentState] + 1560 
13 UIKit       0x1928f50f8 -[UIPresentationController _dismissWithAnimationController:interactionController:target:didEndSelector:] + 764 
14 UIKit       0x19291b8c0 -[UIViewController _dismissViewControllerWithAnimationController:interactionController:completion:] + 464 
15 UIKit       0x1926d0cd4 -[UIViewController _dismissViewControllerWithTransition:from:completion:] + 600 
16 UIKit       0x192678b6c -[UIViewController dismissViewControllerWithTransition:completion:] + 1144 
17 UIKit       0x19267894c -[UIViewController dismissViewControllerWithTransition:completion:] + 600 
18 UIKit       0x19291ab68 -[UIViewController _performCoordinatedPresentOrDismiss:animated:] + 524 
19 UIKit       0x1926786c0 -[UIViewController dismissViewControllerAnimated:completion:] + 152 
20 DinokEtp      0x1001014c4 specialized ViewController.(downloadCaseTypesFile(workFlowVersionMobileShouleBeOn : Double, validateUserResponse : ValidateUserResponse) ->()).(closure #1) (ViewController.swift:360) 
21 DinokEtp      0x1000fd84c ViewController.(downloadCaseTypesFile(workFlowVersionMobileShouleBeOn : Double, validateUserResponse : ValidateUserResponse) ->()).(closure #1) (ViewController.swift:0) 
22 DinokEtp      0x100101b38 partial apply for ViewController.(downloadCaseTypesFile(workFlowVersionMobileShouleBeOn : Double, validateUserResponse : ValidateUserResponse) ->()).(closure #1) (ViewController.swift:0) 
23 CFNetwork      0x18ca89358 __85-[__NSURLSessionLocal downloadTaskForRequest:downloadFilePath:resumeData:completion:]_block_invoke + 32 
24 CFNetwork      0x18caeb18c __50-[__NSCFLocalDownloadTask _private_fileCompletion]_block_invoke.321 + 84 
25 Foundation      0x18cf4d804 __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 16 
26 Foundation      0x18ce92760 -[NSBlockOperation main] + 96 
27 Foundation      0x18ce82b18 -[__NSOperationInternal _start:] + 612 
28 Foundation      0x18cf4fba0 __NSOQSchedule_f + 228 
29 libdispatch.dylib    0x18b3369a0 _dispatch_client_callout + 16 
30 libdispatch.dylib    0x18b344ad4 _dispatch_queue_serial_drain + 928 
31 libdispatch.dylib    0x18b33a2cc _dispatch_queue_invoke + 884 
32 libdispatch.dylib    0x18b346a50 _dispatch_root_queue_drain + 540 
33 libdispatch.dylib    0x18b3467d0 _dispatch_worker_thread3 + 124 
34 libsystem_pthread.dylib   0x18b53f1d0 _pthread_wqthread + 1096 
35 libsystem_pthread.dylib   0x18b53ed7c start_wqthread + 4 


Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0: 
0 libsystem_kernel.dylib   0x000000018b45b224 mach_msg_trap + 8 
1 libsystem_kernel.dylib   0x000000018b45b09c mach_msg + 72 
2 CoreFoundation     0x000000018c42ce88 __CFRunLoopServiceMachPort + 192 
3 CoreFoundation     0x000000018c42aadc __CFRunLoopRun + 1060 
4 CoreFoundation     0x000000018c35ad94 CFRunLoopRunSpecific + 424 
5 GraphicsServices    0x000000018ddc4074 GSEventRunModal + 100 
6 UIKit       0x000000019260c130 UIApplicationMain + 208 
7 DinokEtp      0x00000001000654bc main (EMSCaseUpload.swift:14) 
8 libdyld.dylib     0x000000018b36959c start + 4 

Thread 1 name: Dispatch queue: NSOperationQueue 0x17003e2c0 :: NSOperation 0x17025e5d0 (QOS: DEFAULT) 
Thread 1 Crashed: 
0 libsystem_kernel.dylib   0x000000018b479014 __pthread_kill + 8 
1 libsystem_pthread.dylib   0x000000018b543334 pthread_kill + 112 
2 libsystem_c.dylib    0x000000018b3ed9c4 abort + 140 
3 libc++abi.dylib     0x000000018aeb91b0 __cxa_bad_cast + 0 
4 libc++abi.dylib     0x000000018aed2c04 default_unexpected_handler() + 0 
5 libobjc.A.dylib     0x000000018aee0820 _objc_terminate() + 124 
6 libc++abi.dylib     0x000000018aecf5d4 std::__terminate(void (*)()) + 16 
7 libc++abi.dylib     0x000000018aecf640 std::terminate() + 60 
8 libdispatch.dylib    0x000000018b3369b4 _dispatch_client_callout + 36 
9 libdispatch.dylib    0x000000018b344ad4 _dispatch_queue_serial_drain + 928 
10 libdispatch.dylib    0x000000018b33a2cc _dispatch_queue_invoke + 884 
11 libdispatch.dylib    0x000000018b346a50 _dispatch_root_queue_drain + 540 
12 libdispatch.dylib    0x000000018b3467d0 _dispatch_worker_thread3 + 124 
13 libsystem_pthread.dylib   0x000000018b53f1d0 _pthread_wqthread + 1096 
14 libsystem_pthread.dylib   0x000000018b53ed7c start_wqthread + 4 

Thread 2: 
0 libsystem_pthread.dylib   0x000000018b53ed78 start_wqthread + 0 

Thread 3 name: com.apple.uikit.eventfetch-thread 
Thread 3: 
0 libsystem_kernel.dylib   0x000000018b45b224 mach_msg_trap + 8 
1 libsystem_kernel.dylib   0x000000018b45b09c mach_msg + 72 
2 CoreFoundation     0x000000018c42ce88 __CFRunLoopServiceMachPort + 192 
3 CoreFoundation     0x000000018c42aadc __CFRunLoopRun + 1060 
4 CoreFoundation     0x000000018c35ad94 CFRunLoopRunSpecific + 424 
5 Foundation      0x000000018ce74d64 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 304 
6 Foundation      0x000000018ce95b34 -[NSRunLoop(NSRunLoop) runUntilDate:] + 96 
7 UIKit       0x0000000192f965f8 -[UIEventFetcher threadMain] + 136 
8 Foundation      0x000000018cf722c8 __NSThread__start__ + 996 
9 libsystem_pthread.dylib   0x000000018b54175c _pthread_body + 240 
10 libsystem_pthread.dylib   0x000000018b54166c _pthread_body + 0 
11 libsystem_pthread.dylib   0x000000018b53ed84 thread_start + 4 

Thread 4: 
0 libsystem_kernel.dylib   0x000000018b479a88 __workq_kernreturn + 8 
1 libsystem_pthread.dylib   0x000000018b53f274 _pthread_wqthread + 1260 
2 libsystem_pthread.dylib   0x000000018b53ed7c start_wqthread + 4 

Thread 5: 
0 libsystem_pthread.dylib   0x000000018b53ed78 start_wqthread + 0 

Thread 6 name: com.apple.NSURLConnectionLoader 
Thread 6: 
0 libsystem_kernel.dylib   0x000000018b45b224 mach_msg_trap + 8 
1 libsystem_kernel.dylib   0x000000018b45b09c mach_msg + 72 
2 CoreFoundation     0x000000018c42ce88 __CFRunLoopServiceMachPort + 192 
3 CoreFoundation     0x000000018c42aadc __CFRunLoopRun + 1060 
4 CoreFoundation     0x000000018c35ad94 CFRunLoopRunSpecific + 424 
5 CFNetwork      0x000000018cb66ca4 +[NSURLConnection(Loader) _resourceLoadLoop:] + 404 
6 Foundation      0x000000018cf722c8 __NSThread__start__ + 996 
7 libsystem_pthread.dylib   0x000000018b54175c _pthread_body + 240 
8 libsystem_pthread.dylib   0x000000018b54166c _pthread_body + 0 
9 libsystem_pthread.dylib   0x000000018b53ed84 thread_start + 4 

Thread 1 crashed with ARM Thread State (64-bit): 
    x0: 0x0000000000000000 x1: 0x0000000000000000 x2: 0x0000000000000000 x3: 0x00000001700f8c37 
    x4: 0x000000018aed3b07 x5: 0x000000016de9a850 x6: 0x000000000000006e x7: 0xffffffffffffffec 
    x8: 0x000000000c000000 x9: 0x0000000004000000 x10: 0x000000000000000b x11: 0x000000000000000b 
    x12: 0x0000000000000010 x13: 0x000000018c6c9c0e x14: 0x0000030000000300 x15: 0x0000000000000000 
    x16: 0x0000000000000148 x17: 0x0000000000000000 x18: 0x0000000000000000 x19: 0x0000000000000006 
    x20: 0x000000016de9b000 x21: 0x000000016de9a850 x22: 0x00000001700ff380 x23: 0x0000000000000004 
    x24: 0x00000001b1ebd400 x25: 0x0000000000000000 x26: 0x00000001b1ebd400 x27: 0x000000016de9b0e0 
    x28: 0x0000000000000000 fp: 0x000000016de9a7b0 lr: 0x000000018b543334 
    sp: 0x000000016de9a790 pc: 0x000000018b479014 cpsr: 0x00000000 
+0

당신이 인터넷에 연결하지 않고 응용 프로그램을 테스트 한 적이 있습니까? – Flexicoder

+0

예, 인터넷 연결없이 시도했지만 크래시는 발생하지 않았습니다. 또한 MAC에서 로컬 IPv6 NDS64/NAT64 네트워크를 사용해 보았습니다. – SKim

답변

1

난 당신이 밖에서 그 UIAlertController (또는 다른 UIKit의 API) 와 주 스레드 (일명, Thread 0 위) 상호 작용하지 않는 이중 검사를 추천 할 것입니다. 많은 UIKit API는 기본 스레드에서 만 사용하도록 설계되었습니다.

충돌이 Thread 1에 일어난 주목할 필요가 ...

당신이 의심하는 경우,로 전화 포장 :

DispatchQueue.main.async { 
    // Call UIAlertController code here... 
} 
+1

스택 추적은 뷰 컨트롤러가 백그라운드 스레드에서 해제되고 있음을 분명히 보여줍니다. 그 나쁜. 이 대답은 올바른 해결책을 보여줍니다. 'DispatchQueue.main.async' 안에서'dismiss'를 호출하십시오. – rmaddy

+0

@rmaddy 네가 맞아! 나는 실제로 어떻게 많은'UIKit' 콜이 쓰러진 스레드 내부에서 빠졌는지 알지 못한다. 하하. –

+0

Paulo와 rmaddy에게 감사한다. 컨트롤러 해고 전화를 다시 확인해 보겠습니다. 나의 교화를 위해서, 왜 내가 배경 끈에 대한 해고로부터의 충돌을 보지 못했을까요? 나는 수십 번이 특정 기능을 활용 해 왔으며 결코 충돌이 발생하지 않았습니다. – SKim