diff options
author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2023-02-17 00:49:32 +0200 |
---|---|---|
committer | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2023-02-17 00:51:18 +0200 |
commit | 8032b2d72e9c38f11f8f3c177873b96104d433eb (patch) | |
tree | e8b4771f6124df0f59ea4f03fddf91e15e93857e | |
parent | d998bcbfb54bf5d129f6b88136729a2e2a23c19f (diff) |
SL-19204 Crash at removeObserver
A lot of reports about crashes in voice's removeObserver with no indication of the cause, all MAC specific. By this point terminate should have been called and mVoiceModule should be null, yet callstaks suggest it isn't.
Commit clears LLVoiceClient beforehand to avoid the issue entirely, but issue lies elsewhere and 'voice' crash is just a symptom.
-rw-r--r-- | indra/newview/llappviewer.cpp | 1 | ||||
-rw-r--r-- | indra/newview/llpanelpeople.cpp | 5 | ||||
-rw-r--r-- | indra/newview/llvoiceclient.cpp | 1 |
3 files changed, 6 insertions, 1 deletions
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index dc9f7bb403..767e522273 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -2164,6 +2164,7 @@ bool LLAppViewer::cleanup() LLSelectMgr::deleteSingleton(); LLViewerEventRecorder::deleteSingleton(); LLWorld::deleteSingleton(); + LLVoiceClient::deleteSingleton(); // It's not at first obvious where, in this long sequence, a generic cleanup // call OUGHT to go. So let's say this: as we migrate cleanup from diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index e424d6b5f5..13b52e97c5 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -346,7 +346,10 @@ public: { // will be deleted by ~LLInventoryModel //delete mInvObserver; - LLVoiceClient::getInstance()->removeObserver(this); + if (LLVoiceClient::instanceExists()) + { + LLVoiceClient::getInstance()->removeObserver(this); + } LLAvatarTracker::instance().removeObserver(this); } diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index 6bb987ede4..150b556284 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -142,6 +142,7 @@ LLVoiceClient::LLVoiceClient(LLPumpIO *pump) LLVoiceClient::~LLVoiceClient() { + llassert(!mVoiceModule); } void LLVoiceClient::init(LLPumpIO *pump) |