В чем причина странного поведения при попытке записать в std::cerr, код выкидывает std::bad_cast?

В общем, столкнулся с очень странной ошибкой. Есть такой файл — logger.cpp. Есть макрос DEBUG_PRINT_1 — common_definitions.hpp (хотя это не важно, ибо bad_cast выкидывается и в других случаях).

Везде в коде, где встречается:

DEBUG_PRINT_1("что-то");

вылетает exception std::bad_cast.
Самое странное, что это проявляется только на Mac OS X. Пробовал компилировать clang-ом и gcc разных версий, плюс на разных версиях Mac OS X 10.6.7 и 10.7.3 — везде одно и то же. А вот на Ubuntu и Windows всё работает нормально.
Что это может быть? Баг в Mac OS X? И как обойти это?
  • Вопрос задан
  • 3051 просмотр
Пригласить эксперта
Ответы на вопрос 2
ixSci
@ixSci
1) Куда пишется лог? если в файл, то попробуйте выводить в cout
2) Это какая-то библиотека или что? Если да, то собраны ли они с приложением с полностью идентичными ключами?
Ответ написан
VladX
@VladX Автор вопроса
Как оказалось, это был баг в libstdc++ (которая идёт вместе с gcc-4.6). А clang тоже с ней линковался. Баг связан с использованием кастомной локали (из boost-а). После замены библиотеки проблема исчезла.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы