2015-01-22 3 views
1

이것은 약간 이상한 것입니다.NSMutableArray를 할당 할 때 EXC_BAD_ACCESS

NSMutableArray *unresolvedPlayers = [NSMutableArray arrayWithCapacity:3]; 

이 완벽하게 유효한 라인처럼 보인다 : 내 코드에서

, 나는이 라인을 가지고있다. 나는 (내가 XXXXXXXXX 내 응용 프로그램 이름을 바꾼)이 스택 트레이스이 줄에 추락 :

내 기억이 새로운있는 NSMutableArray를 할당하기에이 문제를 일으킬 것이라고이 시점까지 손상 되었든 그것은 가능하다 어떻게
Exception Type: EXC_BAD_ACCESS (SIGSEGV) 
Exception Subtype: KERN_INVALID_ADDRESS at 0xc158f710 
Triggered by Thread: 7 

Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0: 
0 libsystem_kernel.dylib   0x3870d648 syscall_thread_switch + 8 
1 libsystem_platform.dylib  0x3879a79a _os_lock_handoff_lock_slow + 74 
2 libsystem_malloc.dylib   0x38748ece szone_malloc_should_clear + 50 
3 libsystem_malloc.dylib   0x3874c444 malloc_zone_calloc + 92 
4 libsystem_malloc.dylib   0x3874c3d2 calloc + 46 
5 libobjc.A.dylib     0x380c8414 class_createInstance + 36 
6 CoreFoundation     0x2a5773d0 __CFAllocateObject2 + 8 
7 CoreFoundation     0x2a48c86a +[__NSArrayM __new:::::] + 38 
8 CoreFoundation     0x2a48fd7c -[__NSPlaceholderArray initWithCapacity:] + 100 
9 CoreFoundation     0x2a497e88 +[NSMutableArray arrayWithCapacity:] + 36 
10 xxxxxxxxxx      0x001730f4 -[HostManager setHost:timestamp:] (HostManager.m:703) 
11 xxxxxxxxxx      0x0016ff10 -[HostManager initSessionFromInvitation:] (HostManager.m:46) 
12 xxxxxxxxxx      0x000ea68e -[NetworkController updateWithMatch:] (NetworkController.m:894) 
13 xxxxxxxxxx      0x000ea418 __72-[NetworkController invitePlayersToMatch:playerGroup:completionHandler:]_block_invoke544 (NetworkController.m:844) 
14 GameCenterFoundation   0x31263936 __72-[GKMatchmaker invitePlayersWithRequest:serverHosted:completionHandler:]_block_invoke601 + 42 
15 libdispatch.dylib    0x38620420 _dispatch_call_block_and_release + 8 
16 libdispatch.dylib    0x3862040c _dispatch_client_callout + 20 
17 libdispatch.dylib    0x3862b1b0 _dispatch_main_queue_callback_4CF$VARIANT$mp + 708 
18 CoreFoundation     0x2a53762c __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 4 
19 CoreFoundation     0x2a535d4c __CFRunLoopRun + 1508 
20 CoreFoundation     0x2a482b2c CFRunLoopRunSpecific + 472 
21 CoreFoundation     0x2a48293e CFRunLoopRunInMode + 102 
22 GraphicsServices    0x3183904c GSEventRunModal + 132 
23 UIKit       0x2da786ec UIApplicationMain + 1436 
24 xxxxxxxxxx      0x000503b2 main (main.m:16) 
25 libdyld.dylib     0x3865baac start + 0 

우연히 있다? 나는 이것을 디버깅하는 것으로부터 시작해야할지조차 확실하지 않다. 쉽게 재현 할 수 있는지 확신 할 수 없습니다.

실시간 게임 센터 경기에 가까운 플레이어를 초대 할 때 부차적 인 일이 발생했습니다.

편집 : 난 그냥이이 스레드 (7) 모습입니다 스레드 (7)에 충돌되어 실현 :

Thread 7 name: Dispatch queue: com.apple.root.default-qos 
Thread 7 Crashed: 
0 libobjc.A.dylib     0x380cbf66 objc_msgSend + 6 
1 GameCenterFoundation   0x31285efc -[GKMatchmaker(Nearby) inviteAnyNearbyPlayersWithRequest:] + 960 
2 GameCenterFoundation   0x312636a8 __72-[GKMatchmaker invitePlayersWithRequest:serverHosted:completionHandler:]_block_invoke + 256 
3 GameCenterFoundation   0x3129ae92 __39-[GKDispatchGroup notifyOnQueue:block:]_block_invoke44 + 10 
4 libdispatch.dylib    0x38620420 _dispatch_call_block_and_release + 8 
5 libdispatch.dylib    0x3862c2d6 _dispatch_root_queue_drain + 846 
6 libdispatch.dylib    0x3862d1f6 _dispatch_worker_thread3 + 102 
7 libsystem_pthread.dylib   0x3879de22 _pthread_wqthread + 666 
8 libsystem_pthread.dylib   0x3879db74 start_wqthread + 4 

그래서,이 아마 게임 센터와 버그입니다.

+0

프레임 워크 코드에서 충돌이 발생했다고해서 그것이 프레임 워크의 잘못이라는 것을 의미하지는 않습니다. 근처 플레이어 코드 게시 – LearnCocos2D

답변

1

크래시가 objc_msgSend 인 경우 메시지 대상 개체가 이미 할당 취소되었음을 나타낼 수 있습니다. enable zombie objects을 시도하고 통나무에 눈을 떼지 마십시오.

관련 문제