Ошибка iOS: обнаружено повреждение кучи, список свободных мест поврежден и неверное значение защиты: 0

GFF_MJ(3248,0x103f9ab80) malloc: Heap corruption detected, free list is damaged at 0x28298ffa0
*** Incorrect guard value: 0
GFF_MJ(3248,0x103f9ab80) malloc: *** set a breakpoint in malloc_error_break to debug

Скриншот ошибки:

введите описание изображения здесь

Через некоторое время приложение всегда вылетает, но я не получаю никакой информации, кроме приведенных выше советов. Теперь я не знаю, как это решить, кто может мне помочь?

Спасибо.


person GUOHUA    schedule 20.09.2018    source источник
comment
Всегда не легко найти проблему. Попробуйте использовать анализатор кода из Xcode, а также включите несколько параметров диагностики: очиститель адресов, очиститель неопределенного поведения, объекты-зомби и т.д.   -  person Cy-4AH    schedule 20.09.2018
comment
Я использовал анализатор кода из Xcode, дезинфицирующее средство адресов, дезинфицирующее средство неопределенного поведения и объекты-зомби, чтобы найти проблему. У меня много плюсов, спасибо! @Керберос   -  person GUOHUA    schedule 21.09.2018


Ответы (3)


Эти ошибки не забавны. Скорее всего, у вас где-то переполнение буфера или вы используете кусок памяти после того, как он освободился и топчетесь на чем-то другом.

Поскольку вы можете заставить его падать в отладчике, это значительно упрощает его отслеживание.

Начните с установки точки останова на malloc_error_break, как указано в сообщении об ошибке. Когда вы нажмете эту точку останова, это даст больше подсказки, но все же может быть довольно расплывчатой. Тем не менее, вы сможете опубликовать больше подсказок, и мы сможем вам помочь.

person bbum    schedule 20.09.2018
comment
Я перепробовал множество методов, устанавливая точки останова и анализ адресов, зомби-объекты и многое другое. В конце концов я сгенерировал файл dSYM для анализа, чтобы найти и исправить проблему (таймер не остановился). большое спасибо! - person GUOHUA; 25.07.2019
comment
Включение AddressSanitizer в моем случае сразу выявило проблемную область. Я использовал освобожденную память - упс. - person Pixel; 05.11.2020

В моем случае это была проблема с симулятором (с его памятью).

Попробуйте скомпилировать его на реальном устройстве после очистки папки сборки или закройте симулятор и запустите снова.

person akiliano    schedule 14.08.2019
comment
Были те же проблемы; после перезапуска симулятора все снова работает нормально. - person Andreas Oetjen; 10.02.2020
comment
Благодарю вас! Я боялся, что это заведет меня в темный переулок. Перезапуск симулятора решил эту проблему. - person Canucklesandwich; 26.03.2020

У меня была эта ошибка на macOS. Очистка папки сборки решила проблему.

person Marek H    schedule 12.05.2020