【发布时间】:2011-10-19 00:42:14
【问题描述】:
我有一个在 Snow Leopard 服务器上运行数天或数周的应用程序。
它使用-[NSRunLoop runUntilDate:]“暂停”十秒钟,执行其任务,然后再次暂停。运行一个多小时后,我的应用程序崩溃并出现以下报告:
崩溃报告
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
乍一看,我认为我的 NSRunLoop 对象不再有效,因此 CF 深处的 release 消息会导致崩溃。但是,我认为情况并非如此
我在之前的行中获得了对currentRunLoop 对象的引用。
崩溃时间在 1 到 1.5 小时之间变化,但我不知道是什么原因造成的。 任何 cmets 或意见或调试想法将不胜感激,因为我不确定下一步该做什么。
编辑:问题解决 - 请在下面查看我的答案
【问题讨论】:
-
你能从失败的方法中发布一些代码吗?
标签: objective-c macos cocoa osx-snow-leopard nsrunloop