Segfault в стандартной библиотеке C++ [закрыто]Linux

Ответить
Anonymous
 Segfault в стандартной библиотеке C++ [закрыто]

Сообщение Anonymous »

При использовании boost::format моя программа иногда сталкивается с ошибкой сегмента в locale_facets.h:938. В функции узкой. Я занимаюсь разработкой на AlmaLinux9.
Вот строка, в которой я вызываю формат:

Код: Выделить всё

log.d(boost::format("some logging here %s %s") % _classMemberStr % localStr);
Вот стандартная библиотечная функция, в которой происходит ошибка сегмента. Segfault находится в строке, где объявлен и назначен __t:

Код: Выделить всё

char narrow(char_type __c, char __dfault) const
{
if (_M_narrow[static_cast(__c)])
return _M_narrow[static_cast(__c)];
const char __t = do_narrow(__c, __dfault);
if (__t != __dfault)
_M_narrow[static_cast(__c)] = __t;
return __t;
}
Это метод, который вызывается довольно часто, поэтому странно, что это происходит только иногда.
Я запускал программу в GDB, именно так я нашел место сегфолта. Обе строки были допустимы на момент ошибки, а узкая функция принимала только два аргумента, которые были символами, оба из которых имели значение.
Кроме того, я столкнулся с этой проблемой только тогда, когда компиляция с -O3. Кажется, этого не происходит в конфигурации отладки.

Подробнее здесь: https://stackoverflow.com/questions/784 ... rd-library
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»