Pull to refresh

Боремся с "*** glibc detected ***"

Reading time1 min
Views5.7K
Привет, хабрасообщество!

Хочу рассказать о небольшой проблеме, с которой сегодня столкнулся.
Бывает, программа валится, выдавая строку, начинающуюся с "*** glibc detected ***" и сопровождающуюся большим количеством служебной информации. Дело в том, что в glibc есть собственный менеджер памяти, который в случае попытки освобождения невыделенной памяти начинает паниковать и думать, что порушились внутренние структуры менеджера памяти.

Конечно, правильным путем решения тут будет отдебажить программу, найти ошибку и/или сообщить об этом разработчику. Но иногда результат нужен срочно, и нет времени заниматься этим. В этом случае можно попробовать переключить менеджер памяти glibc в другой режим, менее производительный, но более устойчивый к подобным ошибкам программистов. Сделать это можно так:

MALLOC_CHECK_=0 /path/to/program


Значение «0» заставляет полностью игнорировать подобные ошибки, «1» — выводить сообщения о них в stderr, «2» — завершать программу при обнаружении ошибки.
Работает в Linux libc новее, чем 5.4.23 и GNU libc 2.x.
Tags:
Hubs:
+12
Comments3

Articles

Change theme settings