仅在 OS X 10.6 和 10.7 中关闭应用程序时崩溃
Crash on closing app in OS X 10.6 and 10.7 only
我的应用程序只在 OS X 10.6 和 OS X 10.7 上发生错误:应用程序在关闭时崩溃。
更好地解释:当用户关闭应用程序时 window(因此关闭应用程序)用户会看到一个崩溃对话框,这意味着应用程序在关闭时崩溃了。
我已经设法得到 OS X 10.7 用户的帮助来使用应用程序的调试版本,想象它会产生更容易理解的崩溃日志,但没有任何改变。
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。
我终于解决了这个问题。尽管 OS X 说崩溃属于我的应用程序,但事实并非如此。在我的 applicationWillTerminate:
函数中,我是 运行 一个二进制 throw NSTask,但是该二进制文件被编译为 10.9+ 兼容,这导致了崩溃。
使用 OS X 10.6 作为目标版本重建二进制文件修复了崩溃。部分像@Willeke 建议的那样,我在我的 Mac(双启动)上安装了 Snow Leopard,以便在其中测试我的应用程序,所以现在我将在 Snow Leopard 和 El Capitan 中测试它;最旧和最新的(而 Sierra 没有稳定版本)。
我不知道为什么 OS X 10.8 也没有出现这个错误;可能 Apple 已经改变了系统应对此类问题的方式。
我的应用程序只在 OS X 10.6 和 OS X 10.7 上发生错误:应用程序在关闭时崩溃。
更好地解释:当用户关闭应用程序时 window(因此关闭应用程序)用户会看到一个崩溃对话框,这意味着应用程序在关闭时崩溃了。
我已经设法得到 OS X 10.7 用户的帮助来使用应用程序的调试版本,想象它会产生更容易理解的崩溃日志,但没有任何改变。
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。
我终于解决了这个问题。尽管 OS X 说崩溃属于我的应用程序,但事实并非如此。在我的 applicationWillTerminate:
函数中,我是 运行 一个二进制 throw NSTask,但是该二进制文件被编译为 10.9+ 兼容,这导致了崩溃。
使用 OS X 10.6 作为目标版本重建二进制文件修复了崩溃。部分像@Willeke 建议的那样,我在我的 Mac(双启动)上安装了 Snow Leopard,以便在其中测试我的应用程序,所以现在我将在 Snow Leopard 和 El Capitan 中测试它;最旧和最新的(而 Sierra 没有稳定版本)。
我不知道为什么 OS X 10.8 也没有出现这个错误;可能 Apple 已经改变了系统应对此类问题的方式。