summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2017-03-13 13:58:59 -0400
committerNat Goodspeed <nat@lindenlab.com>2017-03-13 13:58:59 -0400
commit04c3f2b0f0e6cc2a2a64007ae179072ed45102b5 (patch)
treeb05bbd92397bcd138c1246789e9774aecddec799
parentd1ef2a72912bc43e33ca58fdbfcf2662c2b8325b (diff)
DRTVWR-418: Tweak shutdown sequence to avoid resurrecting singletons.
The LLSingletonBase::deleteAll() call late in LLAppViewer::cleanup() deletes the LLSingleton(s) used by the logging machinery, among other things. Attempting further logging after that call (such as our cheery "Goodbye!") has the unfortunate effect of attempting to resurrect the deleted LLSingleton(s). Move "Goodbye!" to just *before* the call. Also, given that call, the manual references to a couple specific LLSingletons in ~LLAppViewer() are (a) unnecessary and (b) cause attempted resurrection. Eliminate both.
-rw-r--r--indra/newview/llappviewer.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index b58af54985..616e084119 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -738,10 +738,7 @@ LLAppViewer::LLAppViewer()
LLAppViewer::~LLAppViewer()
{
delete mSettingsLocationList;
- LLViewerEventRecorder::deleteSingleton();
- LLLoginInstance::instance().setUpdaterService(0);
-
destroyMainloopTimeout();
// If we got to this destructor somehow, the app didn't hang.
@@ -2110,6 +2107,10 @@ bool LLAppViewer::cleanup()
// realtime, or might throw an exception.
LLSingletonBase::cleanupAll();
+ // The logging subsystem depends on an LLSingleton. Any logging after
+ // LLSingletonBase::deleteAll() won't be recorded.
+ LL_INFOS() << "Goodbye!" << LL_ENDL;
+
// This calls every remaining LLSingleton's deleteSingleton() method.
// No class destructor should perform any cleanup that might take
// significant realtime, or throw an exception.
@@ -2122,8 +2123,6 @@ bool LLAppViewer::cleanup()
// probably useful to be able to log that order.
LLSingletonBase::deleteAll();
- LL_INFOS() << "Goodbye!" << LL_ENDL;
-
removeDumpDir();
// return 0;