30 April 2009

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

Configuring Linux
Привет, хабрасообщество!

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

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

MALLOC_CHECK_=0 /path/to/program


Значение «0» заставляет полностью игнорировать подобные ошибки, «1» — выводить сообщения о них в stderr, «2» — завершать программу при обнаружении ошибки.
Работает в Linux libc новее, чем 5.4.23 и GNU libc 2.x.
Tags:glibclinuxglibc getected
Hubs: Configuring Linux
+12
4.9k 5
Comments 3
Popular right now
Administrator Linux. Professional
January 18, 202180,000 ₽OTUS
Безопасность Linux
February 12, 202130,000 ₽OTUS
Профессия Product Manager
December 2, 2020108,500 ₽Нетология
Python для анализа данных
December 2, 202019,000 ₽SkillFactory
Профессия Project Manager
December 2, 202098,000 ₽Нетология