2012-11-27 3 views
1

저는 프로젝트에서 HUD를 사용했습니다. 이 상황은 내 응용 프로그램에서 발생합니다 : 메인 스레드에서는 애니메이션을 수행하고 하위 스레드에서는 sleep을 호출합니다. 나는이 같은 충돌 로그를받을 것이다 :스레드에서 호출 된 수면 (1)이 충돌 할 수 있습니까?

Exception Type: EXC_BAD_ACCESS (SIGSEGV) 
Exception Codes: KERN_INVALID_ADDRESS at 0xd0000008 
Crashed Thread: 0 

Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 libobjc.A.dylib     0x383d55b0 objc_msgSend + 16 
1 UIKit       0x36b7b822 -[UIAnimator stopAnimation:] + 262 
2 UIKit       0x36c16252 -[UIAnimator(Static) _advanceAnimationsOfType:withTimestamp:] + 290 
3 UIKit       0x36b7b384 -[UIAnimator(Static) _LCDHeartbeatCallback:] + 48 
4 QuartzCore      0x35c7006c CA::Display::DisplayLink::dispatch(unsigned long long, unsigned long long) + 156 
5 QuartzCore      0x35c6ffc4 CA::Display::IOMFBDisplayLink::callback(__IOMobileFramebuffer*, unsigned long long, unsigned long long, unsigned long long, void*) + 60 
6 IOMobileFramebuffer    0x312a6fd4 IOMobileFramebufferVsyncNotifyFunc + 152 
7 IOKit       0x312ab446 IODispatchCalloutFromCFMessage + 190 
8 CoreFoundation     0x3646d5d8 __CFMachPortPerform + 116 
9 CoreFoundation     0x36478170 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 32 
10 CoreFoundation     0x36478112 __CFRunLoopDoSource1 + 134 
11 CoreFoundation     0x36476f94 __CFRunLoopRun + 1380 
12 CoreFoundation     0x363e9eb8 CFRunLoopRunSpecific + 352 
13 CoreFoundation     0x363e9d44 CFRunLoopRunInMode + 100 
14 GraphicsServices    0x385962e6 GSEventRunModal + 70 
15 UIKit       0x36a622fc UIApplicationMain + 1116 
16 YH_EMenu      0x000e36c4 main (main.m:14) 
17 YH_EMenu      0x000dd6cc start + 36 

Thread 1: 
0 libsystem_kernel.dylib   0x38503d98 __workq_kernreturn + 8 
1 libsystem_c.dylib    0x33a27cf6 _pthread_workq_return + 14 
2 libsystem_c.dylib    0x33a27a12 _pthread_wqthread + 362 
3 libsystem_c.dylib    0x33a278a0 start_wqthread + 4 

Thread 2 name: Dispatch queue: com.apple.libdispatch-manager 
Thread 2: 
0 libsystem_kernel.dylib   0x384f3648 kevent64 + 24 
1 libdispatch.dylib    0x33cc8974 _dispatch_mgr_invoke + 792 
2 libdispatch.dylib    0x33cc8654 _dispatch_mgr_thread$VARIANT$mp + 32 

Thread 3 name: WebThread 
Thread 3: 
0 libsystem_kernel.dylib   0x384f2eb4 mach_msg_trap + 20 
1 libsystem_kernel.dylib   0x384f3048 mach_msg + 36 
2 CoreFoundation     0x36478040 __CFRunLoopServiceMachPort + 124 
3 CoreFoundation     0x36476d9e __CFRunLoopRun + 878 
4 CoreFoundation     0x363e9eb8 CFRunLoopRunSpecific + 352 
5 CoreFoundation     0x363e9d44 CFRunLoopRunInMode + 100 
6 WebCore       0x385f9a70 RunWebThread(void*) + 440 
7 libsystem_c.dylib    0x33a3230e _pthread_start + 306 
8 libsystem_c.dylib    0x33a321d4 thread_start + 4 

Thread 4: 
0 libsystem_kernel.dylib   0x38503d98 __workq_kernreturn + 8 
1 libsystem_c.dylib    0x33a27cf6 _pthread_workq_return + 14 
2 libsystem_c.dylib    0x33a27a12 _pthread_wqthread + 362 
3 libsystem_c.dylib    0x33a278a0 start_wqthread + 4 

Thread 5: 
0 libsystem_kernel.dylib   0x38503d98 __workq_kernreturn + 8 
1 libsystem_c.dylib    0x33a27cf6 _pthread_workq_return + 14 
2 libsystem_c.dylib    0x33a27a12 _pthread_wqthread + 362 
3 libsystem_c.dylib    0x33a278a0 start_wqthread + 4 

Thread 6: 
0 libsystem_kernel.dylib   0x385036a4 __semwait_signal + 24 
1 libsystem_c.dylib    0x33a373ce nanosleep + 138 
2 libsystem_c.dylib    0x33a97de6 sleep + 42 
3 YH_EMenu      0x000eb580 -[MainViewController threadENDSHOWHUD:] (MainViewController.m:939) 
4 Foundation      0x342ae678 __NSThread__main__ + 968 
5 libsystem_c.dylib    0x33a3230e _pthread_start + 306 
6 libsystem_c.dylib    0x33a321d4 thread_start + 4 

나는이 문제를 해결 할 생각이 없다.

+2

EXC_BAD_ACCESS 오류는 대개 메모리 문제를 나타냅니다. 예를 들어 할당 해제 된 메모리를 사용하려고합니다. 스레드가 잠자기 상태 일 가능성은 거의 없으며 로그는 주 스레드가 충돌을 일으킨 것을 나타냅니다. 애니메이션이 중지되었을 때와 관련이있는 것처럼 보입니다. 그 코드를 처리 할 수 ​​있습니까? – Xono

+1

버그를 발견했습니다. 하위 스레드에서 UI를 변경합니다. – Andy

답변

-1

대신 1 초 동안 절전 (1000)을 사용해보십시오. 여기서 '1000'은 1000ms를 나타냅니다.

+2

1 밀리 초 동안 잠자는 것이 응용 프로그램을 중단해야하는 이유는 무엇입니까? –

+0

이것이 충돌을 일으킨 것입니까? – Andy

+0

수면의 단위는 두 번째입니다. – Andy

관련 문제