secondlife / secondlife/viewer

Linux viewer disables 'Speak' button after 2 minutes in Vivox-disabled region

Open
#5,795 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug linux webrtc
Dominant language
C++
Stars
299
Forks
146
Avg merge
1d 9h
Merged PRs (30d)
88

Description

Environment

Also reproduces on:

  • Firestorm Release x64 7.2.3 (80036)
  • Firestorm Beta x64 7.2.4 (80703)

Second Life Project Lua Editor 26.1.1.24528939506 (64bit)
Release Notes

You are at 128.0, 128.0, 23.0 in webRTC2 located at simhost-00c7b447c4230341c.aditi
SLURL: secondlife://Aditi/secondlife/webRTC2/128/128/23
(global coordinates 260224.0, 245376.0, 23.0)
Kumquat 2026-05-11.25697875340
Release Notes

CPU: AMD Ryzen 9 9950X 16-Core Processor (5756.45 MHz)
Memory: 190806 MB
OS Version: Linux 7.0.5-arch1-1 #1 SMP PREEMPT_DYNAMIC Fri, 08 May 2026 09:29:23 +0000 x86_64
Graphics Card Vendor: NVIDIA Corporation
Graphics Card: NVIDIA GeForce RTX 2080/PCIe/SSE2

OpenGL Version: 4.6.0 NVIDIA 595.71.05

Window size: 1209x945
Font Size Adjustment: 96pt
UI Scaling: 1
Draw distance: 128m
Bandwidth: 10000kbit/s
LOD factor: 1.5
Render quality: 4
Texture memory: 8192MB
Disk cache: Max size 2150.4 MB (5.0% used)

J2C Decoder Version: KDU v8.4.1
Audio Driver Version: OpenAL, version 1.1 ALSOFT 1.24.2 / OpenAL Community / OpenAL Soft: OpenAL Soft
Dullahan: 1.26.0.202510161627
CEF: 139.0.40+g465474a+chromium-139.0.7258.139
Chromium: 139.0.7258.139
LibVLC Version: 3.0.16
Voice Server Version: Secondlife WebRTC Gateway

Packets Lost: 4/764 (0.5%)
May 12 2026 08:12:50

Description

On the Linux platform only, the viewer disables the 'Speak' button about 2 minutes after connecting to a webRTC region when Vivox connectivity is disabled. When this happens, the user is still connected to webRTC voice, and can see voice dots and hear voice audio from other users.

This issue was introduced by the secondlife/server#2532 changes to prevent the server from returning Vivox creds to the viewer via the ProvisionVoiceAccountRequest capability. On all platforms (Win, Mac, Linux), this server change prevents the server from showing a "We are having trouble connecting to the voice server" modal about the failed vivox connectivity.

I have attempted this a number of times on Win11 and MacOS using various viewer builds, but have not reproduced the issue on that platform. I think the difference with Linux is that SLVoice is older, such that it could never connect to modern Vivox voice.

Reproduction steps
  1. Launch the viewer with --set VivoxDebugSIPURIHostName fakebhr.vivox.com --set VivoxDebugVoiceAccountServerURI https://www.fakebhr.vivox.com/api2/ launch arguments, which simulates the eventual Vivox domain removal that we expect.
  2. Login to a simulator with the secondlife/server#2532 changes (see Environment section for a location that is applicable now)
  3. Confirm that the viewer appears to be connected to voice (voice dot, Speak button enabled)
  4. Wait 2 minutes, and look for changes

Expected results:
The viewer should remain connected to voice in (4) and should be able to click 'Speak'.

Actual results:

  • The 'Speak' button gets disabled in (4), though the user remains connected to voice.
  • Here's one example's Secondlife.log. Note that SLVoice.log never gets generated on this platform:
Second Life Project Lua Linux viewer - #Voice messages in session when mic disables at 2026-05-12T01:23:13Z
$ grep -E 'SLVoice|#Voice'  .secondlife/logs/SecondLife.log
2026-05-12T01:22:00Z INFO #Voice# newview/llvoicewebrtc.cpp(782) LLWebRTCVoiceClient::addRenderDevice : Voice Render Device: 'TU104 HD Audio Controller Digital Stereo (HDMI)' (TU104 HD Audio Controller Digital Stereo (HDMI))
2026-05-12T01:22:00Z INFO #Voice# newview/llvoicewebrtc.cpp(782) LLWebRTCVoiceClient::addRenderDevice : Voice Render Device: 'Ryzen HD Audio Controller Analog Stereo' (Ryzen HD Audio Controller Analog Stereo)
2026-05-12T01:22:00Z INFO #Voice# newview/llvoicewebrtc.cpp(782) LLWebRTCVoiceClient::addRenderDevice : Voice Render Device: 'Maestro MBP21' (Maestro MBP21)
2026-05-12T01:22:00Z INFO #Voice# newview/llvoicewebrtc.cpp(689) LLWebRTCVoiceClient::addCaptureDevice : Voice Capture Device: 'HD Webcam C615 Mono' (HD Webcam C615 Mono)
2026-05-12T01:22:00Z INFO #Voice# newview/llvoicewebrtc.cpp(689) LLWebRTCVoiceClient::addCaptureDevice : Voice Capture Device: 'Ryzen HD Audio Controller Analog Stereo' (Ryzen HD Audio Controller Analog Stereo)
2026-05-12T01:22:12Z INFO #Voice# newview/llvoicevivox.cpp(587) LLVivoxVoiceClient::userAuthorized : name "litmus_tester" , ID 70243b06-a65e-4e2b-b419-4844fbc3ea11
2026-05-12T01:22:12Z INFO #Voice# newview/llvoicewebrtc.cpp(1592) LLWebRTCVoiceClient::setMuteMic : ( true )
2026-05-12T01:22:12Z INFO #Voice# newview/llvoicewebrtc.cpp(1659) LLWebRTCVoiceClient::setVoiceEnabled : ( enabled ), coro: inactive
2026-05-12T01:22:12Z INFO #Voice# newview/llvoicewebrtc.cpp(364) LLWebRTCVoiceClient::updateSettings : Input device: "Default", output device: "Default"
2026-05-12T01:22:12Z INFO #Voice# newview/llvoicevivox.cpp(1037) LLVivoxVoiceClient::startAndLaunchDaemon : Launching SLVoice
2026-05-12T01:22:12Z INFO #LLProcess# llcommon/llprocess.cpp(700) LLProcess::LLProcess : SLVoice (55504): launched cd /home/username/Second_Life_Project_Lua_Editor_26_1_1_24528939506_x86_64: /home/username/Second_Life_Project_Lua_Editor_26_1_1_24528939506_x86_64/bin/SLVoice -i 127.0.0.1:44125 -ll 0 -lf /home/username/.secondlife/logs/ -lp SLVoice -ls .log -st 5
2026-05-12T01:22:13Z INFO #LLProcess# llcommon/llprocess.cpp(1011) LLProcess::handle_status : SLVoice (55504) exited with code -1
2026-05-12T01:22:13Z WARNING #Voice# newview/llvoicevivox.cpp(907) LLVivoxVoiceClient::callbackEndDaemon : SLVoice terminated {'data':i-1,'desc':'SLVoice (55504)','id':i55504,'state':i2,'string':'SLVoice (55504) exited with code -1'}
2026-05-12T01:22:13Z WARNING #Voice# newview/llvoicevivox.cpp(1908) LLVivoxVoiceClient::terminateAudioSession : terminateAudioSession(0) with NULL mAudioSession
2026-05-12T01:22:13Z INFO #Voice# newview/llvoiceclient.cpp(297) LLVoiceClient::setHidden : ( false )
2026-05-12T01:22:13Z INFO #Voice# newview/llvoicewebrtc.cpp(364) LLWebRTCVoiceClient::updateSettings : Input device: "Default", output device: "Default"
2026-05-12T01:22:14Z INFO #Voice# newview/llvoicewebrtc.cpp(2747) requestVoiceConnection : Voice connection request: Success
2026-05-12T01:22:14Z INFO #Voice# newview/llvoiceclient.cpp(1210) LLSpeakerVolumeStorage::load : Loading stored speaker volumes from: /home/username/.secondlife/litmus_tester/volume_settings.xml
2026-05-12T01:22:18Z INFO #Voice# newview/llvoicevivox.cpp(1146) LLVivoxVoiceClient::provisionVoiceAccount : Provisioning voice account.
2026-05-12T01:23:08Z WARNING #Voice# newview/llvoicevivox.cpp(1201) LLVivoxVoiceClient::provisionVoiceAccount : Unable to provision voice account.
2026-05-12T01:23:08Z WARNING #Voice# newview/llvoicevivox.cpp(2997) LLVivoxVoiceClient::giveUp : Terminating Voice Service
2026-05-12T01:23:08Z INFO #Voice# newview/llvoicevivox.cpp(803) LLVivoxVoiceClient::voiceControlStateMachine : Voice failed to establish session after 1 tries. Will attempt to reconnect in 5 seconds
2026-05-12T01:23:13Z INFO #Voice# newview/llvoicevivox.cpp(868) LLVivoxVoiceClient::voiceControlStateMachine : will attempt to reconnect to voice
2026-05-12T01:23:13Z INFO #Voice# newview/llvoicevivox.cpp(1037) LLVivoxVoiceClient::startAndLaunchDaemon : Launching SLVoice
2026-05-12T01:23:13Z INFO #LLProcess# llcommon/llprocess.cpp(700) LLProcess::LLProcess : SLVoice (56253): launched cd /home/username/Second_Life_Project_Lua_Editor_26_1_1_24528939506_x86_64: /home/username/Second_Life_Project_Lua_Editor_26_1_1_24528939506_x86_64/bin/SLVoice -i 127.0.0.1:44126 -ll 0 -lf /home/username/.secondlife/logs/ -lp SLVoice -ls .log -st 5
2026-05-12T01:23:13Z INFO #LLProcess# llcommon/llprocess.cpp(1011) LLProcess::handle_status : SLVoice (56253) exited with code -1
2026-05-12T01:23:13Z WARNING #Voice# newview/llvoicevivox.cpp(907) LLVivoxVoiceClient::callbackEndDaemon : SLVoice terminated {'data':i-1,'desc':'SLVoice (56253)','id':i56253,'state':i2,'string':'SLVoice (56253) exited with code -1'}
2026-05-12T01:23:13Z WARNING #Voice# newview/llvoicevivox.cpp(1908) LLVivoxVoiceClient::terminateAudioSession : terminateAudioSession(0) with NULL mAudioSession
2026-05-12T01:23:18Z INFO #Voice# newview/llvoicevivox.cpp(1146) LLVivoxVoiceClient::provisionVoiceAccount : Provisioning voice account.
2026-05-12T01:23:30Z INFO #Voice# newview/llvoicewebrtc.cpp(1659) LLWebRTCVoiceClient::setVoiceEnabled : ( disabled ), coro: active
2026-05-12T01:23:30Z INFO #Voice# newview/llvoicewebrtc.cpp(296) LLWebRTCVoiceClient::terminate : Terminating WebRTC
2026-05-12T01:23:30Z INFO #Voice# newview/llvoiceclient.cpp(1246) LLSpeakerVolumeStorage::save : Saving stored speaker volumes to: /home/username/.secondlife/litmus_tester/volume_settings.xml


This repo is using Opire - what does it mean? 👇
💵 Everyone can add rewards for this issue commenting /reward 100 (replace 100 with the amount).
🕵️‍♂️ If someone starts working on this issue to earn the rewards, they can comment /try to let everyone know!
🙌 And when they open the PR, they can comment /claim #5795 either in the PR description or in a PR's comment.

🪙 Also, everyone can tip any user commenting /tip 20 @maestrolinden (replace 20 with the amount, and @maestrolinden with the user to tip).

📖 If you want to learn more, check out our documentation.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the Linux failure with the listed VivoxDebug launch arguments, then trace the voice state transitions in newview/llvoicevivox.cpp and newview/llvoicewebrtc.cpp around provisioning failure and setVoiceEnabled. Use the supplied SecondLife.log sequence as a reference; done means WebRTC voice remains usable and the Speak button stays enabled when Vivox connectivity is unavailable.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
audio-video-rtc, desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.