Вот строка, в которой я вызываю формат:
Код: Выделить всё
log.d(boost::format("some logging here %s %s") % _classMemberStr % localStr);Код: Выделить всё
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
Мобильная версия