Static instantiation in implicitly implemented C++ methods causes a GDB segmentation fault in newer Glibc versions.
Since the switch from EGlibc to GLibc in Yocto the following exception is known when instantiating static variables in implicitly implemented C++ member methods.
GDB complains with the following exception.
Program received signal SIGSEGV, Segmentation fault. _dl_debug_initialize (ldbase=1447, ns=195728) at dl-debug.c:55 55 if (r->r_map == NULL || ldbase != 0)
if something like the following code excerpt is implemented:
... class AnotherClass { public: AnotherClass(); }; ... class AClass { public: void pub() { static Anotherclass crashingInstance; // Crash here ... move pub() to void AClass ,! :pub() } }; ... MainClass::MainClass() { AClass anInstance; anInstace.pub(); } ...
The error is gone if the method is converted to an explicit implementation:
... class AnotherClass { public: AnotherClass(); }; ... class AClass { public: void pub() }; void TestClass2::pub() { static Anotherclass crashingInstance; } ... MainClass::MainClass() { AClass anInstance; anInstace.pub(); } ...