easyloggingpp
easyloggingpp copied to clipboard
Easylogging crash on initialization after upgrading to separated source
I upgraded easylogging to the version from git master. Previously our application was using the header-only version 9.89.
Now, the application crashes in INITIALIZE_EASYLOGGING with:
malloc.c:2379: sysmalloc: Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed.
Aborted
Running valgrind shows this as the first two memory errors:
==327859== at 0x229449: std::__recursive_mutex_base::__recursive_mutex_base() (mutex:76)
==327859== by 0x229477: std::recursive_mutex::recursive_mutex() (mutex:97)
==327859== by 0x2294A5: el::base::threading::ThreadSafe::ThreadSafe() (easylogging++.hpp:1040)
==327859== by 0x50A7C41: el::base::utils::AbstractRegistry<el::base::HitCounter, std::vector<el::base::HitCounter*, std::allocator<el::base::HitCounter*> > >::AbstractRegistry() (easylogging++.hpp:1293)
==327859== by 0x50A5567: el::base::utils::RegistryWithPred<el::base::HitCounter, el::base::HitCounter::Predicate>::RegistryWithPred() (easylogging++.hpp:1483)
==327859== by 0x50A33BF: el::base::RegisteredHitCounters::RegisteredHitCounters() (easylogging++.hpp:2150)
==327859== by 0x509C1F8: el::base::Storage::Storage(std::shared_ptr<el::LogBuilder> const&) (easylogging++.cpp:2067)
==327859== by 0x5036231: __static_initialization_and_destruction_0(int, int) (otcli.cpp:12)
==327859== by 0x5036311: _GLOBAL__sub_I_otcli.cpp (otcli.cpp:275)
==327859== by 0x400FFB1: call_init.part.0 (dl-init.c:72)
==327859== by 0x40100B8: call_init (dl-init.c:30)
==327859== by 0x40100B8: _dl_init (dl-init.c:119)
==327859== by 0x40010C9: ??? (in /usr/lib/x86_64-linux-gnu/ld-2.31.so)
==327859== Address 0x5d28588 is 0 bytes after a block of size 40 alloc'd
==327859== at 0x4838DEF: operator new(unsigned long) (vg_replace_malloc.c:342)
==327859== by 0x509C1C6: el::base::Storage::Storage(std::shared_ptr<el::LogBuilder> const&) (easylogging++.cpp:2067)
==327859== by 0x5036231: __static_initialization_and_destruction_0(int, int) (otcli.cpp:12)
==327859== by 0x5036311: _GLOBAL__sub_I_otcli.cpp (otcli.cpp:275)
==327859== by 0x400FFB1: call_init.part.0 (dl-init.c:72)
==327859== by 0x40100B8: call_init (dl-init.c:30)
==327859== by 0x40100B8: _dl_init (dl-init.c:119)
==327859== by 0x40010C9: ??? (in /usr/lib/x86_64-linux-gnu/ld-2.31.so)
==327859== by 0x1: ???
==327859== by 0x1FFEFFFF72: ???
==327859== by 0x1FFEFFFFC7: ???
==327859==
==327859== Conditional jump or move depends on uninitialised value(s)
==327859== at 0x280EC5: __gnu_cxx::__normal_iterator<el::Configuration**, std::vector<el::Configuration*, std::allocator<el::Configuration*> > > std::__find_if<__gnu_cxx::__normal_iterator<el::Configuration**, std::vector<el::Configuration*, std::allocator<el::Configuration*> > >, __gnu_cxx::__ops::_Iter_pred<el::Configuration::Predicate> >(__gnu_cxx::__normal_iterator<el::Configuration**, std::vector<el::Configuration*, std::allocator<el::Configuration*> > >, __gnu_cxx::__normal_iterator<el::Configuration**, std::vector<el::Configuration*, std::allocator<el::Configuration*> > >, __gnu_cxx::__ops::_Iter_pred<el::Configuration::Predicate>, std::random_access_iterator_tag) (stl_algobase.h:1927)
==327859== by 0x26D1CB: __gnu_cxx::__normal_iterator<el::Configuration**, std::vector<el::Configuration*, std::allocator<el::Configuration*> > > std::__find_if<__gnu_cxx::__normal_iterator<el::Configuration**, std::vector<el::Configuration*, std::allocator<el::Configuration*> > >, __gnu_cxx::__ops::_Iter_pred<el::Configuration::Predicate> >(__gnu_cxx::__normal_iterator<el::Configuration**, std::vector<el::Configuration*, std::allocator<el::Configuration*> > >, __gnu_cxx::__normal_iterator<el::Configuration**, std::vector<el::Configuration*, std::allocator<el::Configuration*> > >, __gnu_cxx::__ops::_Iter_pred<el::Configuration::Predicate>) (stl_algobase.h:1974)
==327859== by 0x2565BA: __gnu_cxx::__normal_iterator<el::Configuration**, std::vector<el::Configuration*, std::allocator<el::Configuration*> > > std::find_if<__gnu_cxx::__normal_iterator<el::Configuration**, std::vector<el::Configuration*, std::allocator<el::Configuration*> > >, el::Configuration::Predicate>(__gnu_cxx::__normal_iterator<el::Configuration**, std::vector<el::Configuration*, std::allocator<el::Configuration*> > >, __gnu_cxx::__normal_iterator<el::Configuration**, std::vector<el::Configuration*, std::allocator<el::Configuration*> > >, el::Configuration::Predicate) (stl_algo.h:3929)
==327859== by 0x244B6E: el::Configuration* el::base::utils::RegistryWithPred<el::Configuration, el::Configuration::Predicate>::get<el::Level, el::ConfigurationType>(el::Level const&, el::ConfigurationType) (easylogging++.hpp:1549)
==327859== by 0x50930D4: el::Configurations::unsafeSet(el::Level, el::ConfigurationType, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (easylogging++.cpp:548)
==327859== by 0x5090D08: el::Configurations::set(el::Level, el::ConfigurationType, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (easylogging++.cpp:351)
==327859== by 0x50931FE: el::Configurations::setGlobally(el::ConfigurationType, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) (easylogging++.cpp:562)
==327859== by 0x5090E16: el::Configurations::setToDefault() (easylogging++.cpp:365)
==327859== by 0x509A618: el::base::RegisteredLoggers::RegisteredLoggers(std::shared_ptr<el::LogBuilder> const&) (easylogging++.cpp:1887)
==327859== by 0x509C222: el::base::Storage::Storage(std::shared_ptr<el::LogBuilder> const&) (easylogging++.cpp:2068)
==327859== by 0x5036231: __static_initialization_and_destruction_0(int, int) (otcli.cpp:12)
==327859== by 0x5036311: _GLOBAL__sub_I_otcli.cpp (otcli.cpp:275)
I am building easylogging++.cc in a shared object, so this might relase to #640