2016-07-22 3 views
0

Ошибка, которая возникает только с моим приложением на OS X 10.6 и OS X 10.7: приложение падает при закрытии.Ошибка при закрытии приложения в OS X 10.6 и 10.7 только

Объясняя это лучше: когда пользователь закрывает окно приложения (закрывая приложение последним), пользователь видит диалог сбоя, а это означает, что приложение разбилось при закрытии.

Мне удалось получить помощь пользователя 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.

+0

Это может помочь: [Как вы отлаживаете приложение для более старой версии Mac OS X?] (Http://stackoverflow.com/questions/15882296/how-do-you-debug-an-app-for -an-old-version-of-mac-os-x/15882805 # 15882805) – Willeke

+0

Использование определений было бы справедливым, если бы я знал, что не так с приложением. Чтобы установить SDK на 10,6, мне нужно будет загрузить SDK и сделать хак на Xcode, чтобы он принял старый SDK, и в конце концов, для поиска проблемы потребуется целая вечность, поскольку есть много синтаксисов, которые не были возможно, там, например 'array.count' или' dictionary [key] = value; '. Ошибочно признаются ошибки. – vitormm

+0

Ищите повреждение памяти. –

ответ

0

Наконец-то я решил проблему. Несмотря на то, что OS X говорит, что авария принадлежала моему приложению, это было не совсем так. В моей функции applicationWillTerminate: я запускал бинарный NSTask, но этот бинарный файл был скомпилирован с совместимостью 10.9+, и это вызывало крах.

Восстановление двоичного файла с OS X 10.6 имеет целевую версию, исправленную сбой. Частично, как @Willeke предложил, я установил Snow Leopard на моем Mac (двойной загрузке), чтобы проверить его приложение, поэтому теперь я буду тестировать его в Snow Leopard и El Capitan; самый старый и новейший (в то время как Sierra не получает стабильного выпуска).

Я не знаю, почему эта ошибка не произошла и в OS X 10.8; вероятно, Apple изменила способ, которым система должна вести себя к этой проблеме.

Смежные вопросы