Skip to content
Snippets Groups Projects
Commit 562fe5bf authored by andreykproductengine's avatar andreykproductengine
Browse files

SL-10908 Output class names we are clearing on startup

parent 8c32aa0d
No related branches found
No related tags found
No related merge requests found
...@@ -37,6 +37,42 @@ LLMortician::~LLMortician() ...@@ -37,6 +37,42 @@ LLMortician::~LLMortician()
sGraveyard.remove(this); sGraveyard.remove(this);
} }
U32 LLMortician::logClass(std::stringstream &str)
{
U32 size = sGraveyard.size();
str << "Mortician graveyard count: " << size;
str << " Zealous: " << (sDestroyImmediate ? "True" : "False");
if (size == 0)
{
return size;
}
str << " Output:\n";
std::list<LLMortician*>::iterator iter = sGraveyard.begin();
std::list<LLMortician*>::iterator end = sGraveyard.end();
while (iter!=end)
{
LLMortician* dead = *iter;
iter++;
// Be as detailed and safe as possible to figure out issues
str << "Pointer: " << dead;
if (dead)
{
try
{
str << " Is dead: " << (dead->isDead() ? "True" : "False");
str << " Name: " << typeid(*dead).name();
}
catch (...)
{
}
}
str << "\n";
}
str << "--------------------------------------------";
return size;
}
void LLMortician::updateClass() void LLMortician::updateClass()
{ {
while (!sGraveyard.empty()) while (!sGraveyard.empty())
......
...@@ -34,6 +34,8 @@ class LL_COMMON_API LLMortician ...@@ -34,6 +34,8 @@ class LL_COMMON_API LLMortician
{ {
public: public:
LLMortician() { mIsDead = FALSE; } LLMortician() { mIsDead = FALSE; }
static U32 graveyardCount() { return sGraveyard.size(); };
static U32 logClass(std::stringstream &str);
static void updateClass(); static void updateClass();
virtual ~LLMortician(); virtual ~LLMortician();
void die(); void die();
......
...@@ -348,6 +348,14 @@ bool idle_startup() ...@@ -348,6 +348,14 @@ bool idle_startup()
// to work. // to work.
gIdleCallbacks.callFunctions(); gIdleCallbacks.callFunctions();
gViewerWindow->updateUI(); gViewerWindow->updateUI();
// There is a crash on updateClass, this is an attempt to get more information
if (LLMortician::graveyardCount())
{
std::stringstream log_stream;
LLMortician::logClass(log_stream);
LL_INFOS() << log_stream.str() << LL_ENDL;
}
LLMortician::updateClass(); LLMortician::updateClass();
const std::string delims (" "); const std::string delims (" ");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment