Skip to content

Commit b4bd89b

Browse files
committed
RaiseException on voiceControlCoro
For some reason try block from voiceControlCoro doesn't trigger, but one from toplevel does and claim that it's voiceControlCoro, logs also suggest that vivox was doing an outgoing call. This is mostly to get evidence.
1 parent 55732f7 commit b4bd89b

File tree

2 files changed

+39
-14
lines changed

2 files changed

+39
-14
lines changed

indra/newview/llviewerobjectlist.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,7 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys,
402402

403403
LLViewerObject *objectp;
404404
S32 num_objects;
405-
U32 local_id;
405+
U32 local_id = 0;
406406
LLPCode pcode = 0;
407407
LLUUID fullid;
408408
S32 i;

indra/newview/llvoicevivox.cpp

Lines changed: 38 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2024,23 +2024,48 @@ bool LLVivoxVoiceClient::waitForChannel()
20242024
llcoro::suspend();
20252025
break;
20262026
}
2027-
sessionStatePtr_t joinSession = mNextAudioSession;
2028-
mNextAudioSession.reset();
2029-
mIsProcessingChannels = true;
2030-
if (!runSession(joinSession)) //suspends
2027+
2028+
try
20312029
{
2032-
mIsProcessingChannels = false;
2033-
LL_DEBUGS("Voice") << "runSession returned false; leaving inner loop" << LL_ENDL;
2034-
break;
2030+
sessionStatePtr_t joinSession = mNextAudioSession;
2031+
mNextAudioSession.reset();
2032+
mIsProcessingChannels = true;
2033+
if (!runSession(joinSession)) //suspends
2034+
{
2035+
mIsProcessingChannels = false;
2036+
LL_DEBUGS("Voice") << "runSession returned false; leaving inner loop" << LL_ENDL;
2037+
break;
2038+
}
2039+
else
2040+
{
2041+
mIsProcessingChannels = false;
2042+
LL_DEBUGS("Voice")
2043+
<< "runSession returned true to inner loop"
2044+
<< " RelogRequested=" << mRelogRequested
2045+
<< " VoiceEnabled=" << mVoiceEnabled
2046+
<< LL_ENDL;
2047+
}
20352048
}
2036-
else
2049+
catch (const LLCoros::Stop&)
2050+
{
2051+
LL_DEBUGS("LLVivoxVoiceClient") << "Received a shutdown exception" << LL_ENDL;
2052+
}
2053+
catch (const LLContinueError&)
2054+
{
2055+
LOG_UNHANDLED_EXCEPTION("LLVivoxVoiceClient");
2056+
}
2057+
catch (...)
20372058
{
2038-
mIsProcessingChannels = false;
2039-
LL_DEBUGS("Voice")
2040-
<< "runSession returned true to inner loop"
2041-
<< " RelogRequested=" << mRelogRequested
2042-
<< " VoiceEnabled=" << mVoiceEnabled
2059+
// Ideally for Windows need to log SEH exception instead or to set SEH
2060+
// handlers but bugsplat shows local variables for windows, which should
2061+
// be enough
2062+
LL_WARNS("Voice") << "voiceControlStateMachine crashed in state VOICE_CHANNEL_STATE_PROCESS_CHANNEL"
2063+
<< " mRelogRequested " << mRelogRequested
2064+
<< " mVoiceEnabled " << mVoiceEnabled
2065+
<< " mIsProcessingChannels " << mIsProcessingChannels
2066+
<< " mProcessChannels " << mProcessChannels
20432067
<< LL_ENDL;
2068+
throw;
20442069
}
20452070
}
20462071

0 commit comments

Comments
 (0)