Breakpad в OSX: проверка сбойного процесса не удалась
Я пытаюсь выяснить, почему проверка сбоя процесса не удается на OSX 10.8. Я добавляю Breakpad в Mac-версию очень большого и сложного профессионального приложения. Я в настоящее время использую Breakpad R1035. Из-за обстоятельств, не зависящих от меня, мое приложение построено с использованием XCode 3.2.6 (GCC 4.2). Вероятно, это длинный путь, так как в последнее время под тегом Breakpad на SO не было большой активности.
Я немного покопался в коде Breakpad, чтобы определить, где именно происходит сбой. generator.Write(...)
вызывать Inspector::InspectTask()
возвращает ложь В Write()
Призыв к WriteMemoryListStream(...)
приводит к ReadTaskMemory(...)
что делает mach_vm_read(...)
системный вызов, в котором позже Инспектор сообщил об ошибке: Error writing minidump - errno=No such process
Есть ли причина, по которой процесс сбоя не существует, или почему он не будет должным образом обнаружен инспектором? Я пытался изменить @BREAKPAD_SEND_AND_EXIT
установка на "НЕТ", но это не имеет значения. Каждый раз, когда я вызываю сбой, генерируется файл размером 2 МБ.dmp, содержащий нечитаемый человеком текст.
Вот вывод из инспектора, когда я вызываю сбой:
message ID = 0
exception_type = 1
exception_code = 1
exception_subcode = 0
remote_task = 7171
crashing_thread = 6915
handler_thread = 6659
ack_port_ = 6403
parameter count = 18
Inspector: sent acknowledgement (os/kern) successful (0)
Вот stderr из Inspector, когда я вызываю сбой (отредактированный для удаления каталогов):
Suspended Remote task
Writing minidump to directory (<correct location>)
minidump path (<correct location>/DD6D8905-F55F-4035-96BA-25460453F236.dmp)
Error writing minidump - errno=No such process
Resumed remote task
Inspector: trying to send acknowledgement to port 6403
Inspection of crashed process failed
Кто-нибудь сталкивался с подобными проблемами при добавлении Breakpad в приложение на Mac? Или видел, что mach_vm_read(...) терпит неудачу подобным образом?