From 151e52617728b8f0dabaafa3f612fff008aae7b1 Mon Sep 17 00:00:00 2001 From: Nicky Date: Fri, 18 Oct 2013 01:59:03 +0200 Subject: [PATCH] FIRE-11884 ; Crash on exit. This seems to be another cause. Testing this theory. --- indra/newview/llchannelmanager.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/indra/newview/llchannelmanager.cpp b/indra/newview/llchannelmanager.cpp index 23f853707a..e28b73bfc1 100755 --- a/indra/newview/llchannelmanager.cpp +++ b/indra/newview/llchannelmanager.cpp @@ -57,13 +57,20 @@ LLChannelManager::LLChannelManager() //-------------------------------------------------------------------------- LLChannelManager::~LLChannelManager() { - for(std::vector::iterator it = mChannelList.begin(); it != mChannelList.end(); ++it) - { - LLScreenChannelBase* channel = it->channel.get(); - if (!channel) continue; + // HACK/Test FIRE-11884 / Crash on exit. After making sure no ScreenChannel gets destroyed in a LLView dtor, this can still + // crash when the static singleton of LLChannelManager is destroyed. + // Leak those few channels on shutdown here to test if that fixes the rest of the crash. As this is shutdown code, the OS will clean up after us. + // Not nice or recommended, but not harmful either here. - delete channel; - } + // for(std::vector::iterator it = mChannelList.begin(); it != mChannelList.end(); ++it) + // { + // LLScreenChannelBase* channel = it->channel.get(); + // if (!channel) continue; + // + // delete channel; + // } + + // mChannelList.clear(); }