Я перезвоню здесь с похожим случаем, который у нас был. Мы ссылались на регистратор, который не был определен в нашем файле конфигурации log4cxx. В некоторых версиях библиотеки это было нормально, но в других это вызывало трассировку стека следующим образом:
Program received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb) bt
#0 0x0000000000000000 in ?? ()
#1 0x00007ffff72b3892 in std::_Rb_tree<std::string, std::pair<std::string const, log4cxx::helpers::ObjectPtrT<log4cxx::Logger> >, std::_Select1st<std::pair<std::string const, log4cxx::helpers::ObjectPtrT<log4cxx::Logger> > >, std::less<std::string>, std::allocator<std::pair<std::string const, log4cxx::helpers::ObjectPtrT<log4cxx::Logger> > > >::_M_erase(std::_Rb_tree_node<std::pair<std::string const, log4cxx::helpers::ObjectPtrT<log4cxx::Logger> > >*) ()
from /usr/lib/liblog4cxx.so.10
#2 0x00007ffff72b387b in std::_Rb_tree<std::string, std::pair<std::string const, log4cxx::helpers::ObjectPtrT<log4cxx::Logger> >, std::_Select1st<std::pair<std::string const, log4cxx::helpers::ObjectPtrT<log4cxx::Logger> > >, std::less<std::string>, std::allocator<std::pair<std::string const, log4cxx::helpers::ObjectPtrT<log4cxx::Logger> > > >::_M_erase(std::_Rb_tree_node<std::pair<std::string const, log4cxx::helpers::ObjectPtrT<log4cxx::Logger> > >*) ()
from /usr/lib/liblog4cxx.so.10
#3 0x00007ffff72b387b in std::_Rb_tree<std::string, std::pair<std::string const, log4cxx::helpers::ObjectPtrT<log4cxx::Logger> >, std::_Select1st<std::pair<std::string const, log4cxx::helpers::ObjectPtrT<log4cxx::Logger> > >, std::less<std::string>, std::allocator<std::pair<std::string const, log4cxx::helpers::ObjectPtrT<log4cxx::Logger> > > >::_M_erase(std::_Rb_tree_node<std::pair<std::string const, log4cxx::helpers::ObjectPtrT<log4cxx::Logger> > >*) ()
from /usr/lib/liblog4cxx.so.10
#4 0x00007ffff72b1a2a in log4cxx::Hierarchy::~Hierarchy() () from /usr/lib/liblog4cxx.so.10
#5 0x00007ffff72b1c49 in log4cxx::Hierarchy::~Hierarchy() () from /usr/lib/liblog4cxx.so.10
#6 0x00007ffff72c982a in log4cxx::spi::DefaultRepositorySelector::~DefaultRepositorySelector() ()
from /usr/lib/liblog4cxx.so.10
#7 0x00007ffff72c95bc in log4cxx::helpers::ObjectPtrT<log4cxx::spi::RepositorySelector>::~ObjectPtrT() ()
from /usr/lib/liblog4cxx.so.10
#8 0x00007ffff52e8e25 in __cxa_finalize () from /lib/x86_64-linux-gnu/libc.so.6
#9 0x00007ffff727c2b6 in ?? () from /usr/lib/liblog4cxx.so.10
#10 0x000000000000005b in ?? ()
Так что нам просто пришлось удалить ссылку, и все было хорошо. Это было очень безобидное заявление:
LoggerPtr logger(Logger::getLogger("someloggerthatdoesnotexist"));