2010-01-12 2 views
1

NSOperation 하위 클래스를 사용하여 이미지를 만듭니다. thread가 생성되어 imageView에 표시되는 이미지를 만듭니다. 이미지는 arraycontroller에서 키로 설정되며 이미지 뷰에 바인딩됩니다.NSImage _cacheSnapShotRep 충돌

사용자가 무작위로 응용 프로그램 충돌을보고하고 크래시 로그가 _cacheSnapshotRep() 선택기를 호출하는 스레드에서 오류를 표시합니다. 나는 스스로를 재현 할 수 없었으며이 오류에 대한 웹 검색에는 아무것도 나타나지 않습니다. 그래서 어떤 조언은, 여기에서이 갈 곳으로 손실을 조금 해요

Thread 5 Crashed: Dispatch queue: com.apple.root.default-priority 
0 libobjc.A.dylib     0x90008edb objc_msgSend + 27 
1 com.apple.AppKit    0x962abd48 -[NSImage _usingBestRepresentationForRect:context:hints:body:] + 189 
2 com.apple.AppKit    0x962ab87e -[NSImage drawInRect:fromRect:operation:fraction:respectFlipped:hints:] + 1939 
3 com.apple.AppKit    0x962aa6a0 -[NSImage _drawMappingAlignmentRectToRect:withState:backgroundStyle:operation:fraction:flip:hints:] + 842 
4 com.apple.AppKit    0x963bfb95 -[NSImageCell drawInteriorWithFrame:inView:] + 821 
5 com.apple.AppKit    0x963bf7f9 -[NSImageCell drawWithFrame:inView:] + 2133 
6 com.apple.AppKit    0x9635066a -[NSControl drawRect:] + 589 
7 com.apple.AppKit    0x96348a99 -[NSView _drawRect:clip:] + 3510 
8 com.apple.AppKit    0x969ae107 -[_NSViewDrawOperation main] + 257 
9 com.apple.Foundation   0x9279c33b -[__NSOperationInternal start] + 811 
10 com.apple.Foundation   0x9279bf61 ____startOperations_block_invoke_2 + 94 
11 libSystem.B.dylib    0x922ac828 _dispatch_call_block_and_release + 16 
12 libSystem.B.dylib    0x9229ea5c _dispatch_worker_thread2 + 222 
13 libSystem.B.dylib    0x9229e4f1 _pthread_wqthread + 390 
14 libSystem.B.dylib    0x9229e336 start_wqthread + 30 

:

Exception Type: EXC_BAD_ACCESS (SIGBUS) 
Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000000 
Crashed Thread: 5 Dispatch queue: com.apple.root.default-priority 

Application Specific Information: 
objc_msgSend() selector name: _cacheSnapshotRep: 

그리고 다음은

는 충돌 로그에서 관련 부분입니다 고맙습니다.

+0

클래스에 "_NSViewDrawOperation"이 있습니까? –

답변

0

그래서 내 하위 스레드에서 스레드 안전하지 않은 클래스를 사용하는 것이 원인입니다.

Apple's documentation은 스레드 안전 규칙에 대한 좋은 요약을 제공합니다.

2
Exception Type: EXC_BAD_ACCESS (SIGBUS) 

나에게 메모리 관리 문제 같은데, NSZombieEnabled 또는 Instruments는 오류를 직접 재현 할 수없는 특히, 무엇이 잘못되었는지를 찾아 내기에서 당신을 원조해야한다.