У меня очень старая программа, которая разбилась. При отладке аварии с Windbg, что я установил в качестве посмертного отладчик, я заметил, что один из регистров был установлен в странное значение:Странные значения в регистрах и параметрах вызова
rdx=00000000
deadface
Stack след резьбы что вызвало сбой (нарушение прав доступа) содержит подозрительное значение, а также:
objc_1!objc_msg_lookup+0x29: 00000000 6784a4c5 488b4a38 mov rcx,qword ptr [rdx+38h] ds:00000000
dead
fb06=????????????????
Я получил первое значение из списков регистров, которое было включено в вывод команды !analyze -v
. Вторая команда была создана командой для перечисления стека нисходящей нити (~9k
).
Является ли Windbg попыткой сказать мне что-то, поместив такие значения в реестр и дампы стека, или я просто жертва какого-то старого тестового кода или мистификации (или это просто совпадение)?
Программа написана в obj-c и запускает старые версии GNUstep и obj-c runtime.
Существует шаблон памяти 'deadbeef', который обозначает память, освобожденную' HeapFree() ' –
Спасибо, хороший намек. Просто обнаружил, что 'deadface' - это шаблон, используемый GNUstep для аналогичной цели. –