summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2023-02-17 00:49:32 +0200
committerAndrey Kleshchev <andreykproductengine@lindenlab.com>2023-02-17 00:51:18 +0200
commit8032b2d72e9c38f11f8f3c177873b96104d433eb (patch)
treee8b4771f6124df0f59ea4f03fddf91e15e93857e /indra/newview
parentd998bcbfb54bf5d129f6b88136729a2e2a23c19f (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.
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llappviewer.cpp1
-rw-r--r--indra/newview/llpanelpeople.cpp5
-rw-r--r--indra/newview/llvoiceclient.cpp1
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)