Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

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();
}
...
  • No labels