Go to file
minerjr 0cdae450d8 FIRE-36022- Removing my USB headset crashes entire viewer - WebRTC fix
This is created to address the issue of USB headsets being removed or Bluetooth headsets with bad connections causing the viewer to lock up.

First Part: WebRTC

WebRTC now has an added inline atomic bool used to track when the worker thread is accessing the audio hardware. If the coroutine that is always running detects 10 consecutive true flag values, it will set WebRTC to exit and exit itself.

This coroutine was what was locking up the viewer as it spammed the mMainQueue with messages every update, but the worker thread was locked up and unable to receive the messages. Once the queue reached 1024 messages, it would lock up.

Underlying issue is the Windows Core Audio driver system crashes if too many threads have requests to get audio updates upon hardware changes. And with a USB headset having 2 devices in 1, it multiples the updates by 2x. The WebRTC audio system itself locks a mutex as it calls the core audio system to get set the input, but if it is already being processed by another thread, it then gets an exception to try again. The audio driver is not handling the message and crashes and does not return leaving the WebRTC worker thread locked.
2025-10-28 23:05:53 -03:00
.github [WebRTC] Rework device handling sequence so that we can handle unplugging/re-plugging devices (#4593) 2025-10-12 16:32:18 +10:00
doc Clean the build instructions up a bit: 2025-09-12 00:24:52 +02:00
etc Merge branch 'webrtc-voice' of https://github.com/secondlife/viewer 2024-03-19 17:09:42 +01:00
fsutils Handle long text for discord hook 2024-10-02 00:43:13 +01:00
indra FIRE-36022- Removing my USB headset crashes entire viewer - WebRTC fix 2025-10-28 23:05:53 -03:00
scripts Silence the python regex warning with a raw string. 2025-09-09 01:16:08 +01:00
.clang-format More changes to Clang-Format to match the current coding standard (#2375) 2024-08-21 19:46:49 +03:00
.editorconfig Add editorconfig 2024-05-01 08:23:35 -07:00
.git-blame-ignore-revs let's ignore this beq-derp in the blame 2025-04-17 16:59:25 +01:00
.gitattributes Protect NSIS scripts from eol-style translations. (#1556) 2024-05-23 11:23:50 -07:00
.gitignore Add VS temp folders to gitignore 2025-09-18 18:54:48 +02:00
.pre-commit-config.yaml Update pre-commit hook to v5.0.0 (#4093) 2025-05-16 20:46:18 +03:00
CONTRIBUTING.md Rename FS_PR_GUIDELINES.md to CONTRIBUTING.md and move it to root so it gets linked when creating PRs on Github 2025-06-16 11:39:56 +02:00
FIRESTORM-SOURCE_LICENSE_HEADER.txt It's 2025... 2025-01-25 13:40:17 +01:00
LICENSE
README.md Link to the actual TPV policy 2025-06-21 03:15:32 +02:00
autobuild.xml Use RyeMutt fixed WebRTC in lieu of LL until upstream is re-aligned 2025-10-15 14:30:32 +01:00
build.sh Merge branch 'develop' of https://github.com/secondlife/viewer 2024-09-19 23:04:19 +02:00
build_target.sh
buildscripts_support_functions SL-18837: Get buildscripts_support_functions from sling-buildscripts 2023-06-28 16:58:32 -04:00
requirements.txt use latest autobuild and llsd/llbase 2023-12-29 02:34:45 +00:00

README.md

Logo of Firestorm viewer

Firestorm is a free client for 3D virtual worlds such as Second Life and various OpenSim worlds where users can create, connect and chat with others from around the world.

This repository contains the official source code for the Firestorm viewer.

Open Source

Firestorm is a third party viewer derived from the official Second Life client. The client codebase has been open source since 2007 and is available under the LGPL license.

Download

Pre-built versions of the viewer releases for Windows, Mac and Linux can be downloaded from the official website.

Build Instructions

Build instructions for each operating system can be found using the links below and in the official wiki.

[!NOTE] We do not provide support for compiling the viewer or issues resulting from using a self-compiled viewer. However, there is a self-compilers group within Second Life that can be joined to ask questions related to compiling the viewer: Firestorm Self Compilers

Contribute

Help make Firestorm better! You can get involved with improvements by filing bugs and suggesting enhancements via JIRA or creating pull requests.

Community respect

This section is guided by the TPV Policy and the Second Life Code of Conduct.

Firestorm code is made available during ongoing development, with the master branch representing the current nightly build. Developers and self-compilers are encouraged to work on their own forks and contribute back via pull requests, as detailed in the contributing guide.

If you intend to use our code for your own viewer beyond personal use, please only use code from official release branches (for example, Firestorm_7.1.13), rather than from pre-release/preview or nightly builds.