2010-01-12 4 views
1

Je crée des images en utilisant une sous-classe NSOperation; les threads sont engendrés pour créer les images qui sont affichées dans un imageView. Les images sont définies comme une clé dans un contrôleur de tableau, qui est lié à l'imageview.NSImage _cacheSnapShotRep crash

Les utilisateurs signalent de manière aléatoire les plantages de l'application et le journal des pannes affiche une erreur dans un thread appelant le sélecteur _cacheSnapshotRep(); J'ai été incapable de reproduire cela moi-même et il n'y a rien à venir dans les recherches sur le Web pour cette erreur.

Voici les sections pertinentes du journal de plantage:

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: 

Et:

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 

Je suis un peu perdu à l'endroit où aller avec ce d'ici, de sorte que tout conseil est apprécié.

+0

Est-ce que "_NSViewDrawOperation" est votre classe? –

Répondre

0

Cela semble provenir de l'utilisation de classes non thread-safe dans mes sous-threads.

Apple's documentation donne un bon résumé des règles de sécurité des threads.

2
Exception Type: EXC_BAD_ACCESS (SIGBUS) 

On dirait un devrait vous aider problème de gestion de la mémoire pour moi, NSZombieEnabled ou Instruments à trouver ce qui ne va pas, surtout si vous ne pouvez pas reproduire l'erreur vous-même.