J'ai une application qui fonctionne pendant des jours et des semaines sur un serveur Snow Leopard. Il utilise -[NSRunLoop runUntilDate:]
pour "mettre en pause" pendant dix secondes, effectuer sa tâche, puis mettre en pause à nouveau. Après avoir exécuté pendant plus d'une heure, mon application se bloque avec le rapport suivant:NSRunloop runUntilDate provoque un plantage de l'application
Crash Report
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000013
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Application Specific Information:
objc_msgSend() selector name: release
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 libobjc.A.dylib 0x00007fff84cfef0c objc_msgSend + 40
1 com.apple.CoreFoundation 0x00007fff84e363d1 __CFRunLoopDoSources0 + 1361
2 com.apple.CoreFoundation 0x00007fff84e345c9 __CFRunLoopRun + 873
3 com.apple.CoreFoundation 0x00007fff84e33d8f CFRunLoopRunSpecific + 575
4 com.apple.Foundation 0x00007fff83e73b74 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 270
5 com.apple.Foundation 0x00007fff83ebf19a -[NSRunLoop(NSRunLoop) runUntilDate:] + 78
À première vue, je pensais que mon NSRunLoop
objet est plus valide et donc le message release
au plus profond de CF provoque un crash. Cependant, je ne pense pas que ce soit le cas J'obtiens la référence à l'objet currentRunLoop
dans la ligne précédente. Le temps d'accident varie entre 1 et 1.5hrs mais je ne peux pas comprendre ce qui le cause. Tous les commentaires ou opinions ou idées de débogage seraient grandement appréciés car je ne sais pas quoi faire ensuite.
EDIT: problème résoudre - s'il vous plaît voir ma réponse ci-dessous
Pouvez-vous envoyer du code à partir de la méthode défaillante? – NJones