有一个错误只发生在OS X 10.6和OS X 10.7上的应用程序中:应用程序在关闭时崩溃。
更好地解释:当用户关闭应用程序窗口(通过后果关闭应用程序)时,用户会看到崩溃对话框,这意味着应用程序在关闭时崩溃。
我设法获得OS X 10.7用户的帮助,使用该应用程序的Debug版本,想象它会使崩溃日志更容易理解,但没有任何改变。
Process: MyApp [838]
Path: /Applications/MyApp.app/Contents/MacOS/MyApp
Identifier: MyApp
Version: ??? (???)
Code Type: X86-64 (Native)
Parent Process: MyApp [650]
Date/Time: 2016-07-20 17:38:24.043 0200
OS Version: Mac OS X 10.7.5 (11G63)
Report Version: 9
Crashed Thread: Unknown
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00007fff5fc01028
Backtrace not available
Unknown thread crashed with X86 Thread State (64-bit):
rax: 0x0000000000000055 rbx: 0x0000000000000000 rcx: 0x0000000000000000 rdx: 0x0000000000000000
rdi: 0x0000000000000000 rsi: 0x0000000000000000 rbp: 0x0000000000000000 rsp: 0x0000000000000000
r8: 0x0000000000000000 r9: 0x0000000000000000 r10: 0x0000000000000000 r11: 0x0000000000000000
r12: 0x0000000000000000 r13: 0x0000000000000000 r14: 0x0000000000000000 r15: 0x0000000000000000
rip: 0x00007fff5fc01028 rfl: 0x0000000000010203 cr2: 0x00007fff5fc01028
Logical CPU: 0
Binary images description not available
External Modification Summary:
Calls made by other processes targeting this process:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
Calls made by this process:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
Calls made by all processes on this machine:
task_for_pid: 316
thread_create: 0
thread_set_state: 0
从Report Version
开始,除了task_for_pid
之外,一切都始终完全相同。
我知道它不会影响程序的使用,因为它只发生在程序关闭之后,但是每次关闭应用程序时看到崩溃报告肯定会很痛苦。
请记住,OS X 10.8或更高版本不会发生此错误,并且我使用的是10.11 SDK。
答案 0 :(得分:0)
最后我解决了这个问题。尽管OS X说崩溃属于我的应用程序,但事实并非如此。在我的applicationWillTerminate:
函数中,我运行二进制抛出NSTask,但是该二进制文件被编译为10.9+兼容,这导致了崩溃。
使用OS X 10.6重建二进制文件,因为目标版本修复了崩溃。部分就像@Willeke建议的那样,我在我的Mac上安装了Snow Leopard(双启动)以测试我的应用程序,所以现在我将在Snow Leopard和El Capitan中测试它;最古老和最新的(而Sierra不会得到稳定的释放)。
我不知道为什么在OS X 10.8中也没有发生这个错误;可能Apple已经改变了系统应该对这种问题的行为方式。