SL-10908 Output class names we are clearing on startup
parent
8c32aa0dd1
commit
562fe5bf63
|
|
@ -37,6 +37,42 @@ LLMortician::~LLMortician()
|
|||
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()
|
||||
{
|
||||
while (!sGraveyard.empty())
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@ class LL_COMMON_API LLMortician
|
|||
{
|
||||
public:
|
||||
LLMortician() { mIsDead = FALSE; }
|
||||
static U32 graveyardCount() { return sGraveyard.size(); };
|
||||
static U32 logClass(std::stringstream &str);
|
||||
static void updateClass();
|
||||
virtual ~LLMortician();
|
||||
void die();
|
||||
|
|
|
|||
|
|
@ -348,6 +348,14 @@ bool idle_startup()
|
|||
// to work.
|
||||
gIdleCallbacks.callFunctions();
|
||||
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();
|
||||
|
||||
const std::string delims (" ");
|
||||
|
|
|
|||
Loading…
Reference in New Issue