FIRE-36022 - Removing my USB headset crashes entire viewer

Commented out a block of new code recently added which was also being called by one of the callback functions.
This had the side effect of having 2 LLWebRTCDevicesObserver listening to the hardware removal events and cause both to trigger events at the same time, which may be the source of the queue being locked up in a race condition.

Was able to reproduce issue 2x without code change by moving mouse around a lot while on  rezing and then pulling USB headset out of the USB port. Direct motherboard USB port seemed to work the best as could not trigger while headset was in USB hub.
meow-7.2.2
minerjr 2025-10-17 22:01:17 -03:00
parent b5c02e1914
commit 4a6975a944
1 changed files with 8 additions and 2 deletions

View File

@ -339,7 +339,12 @@ void LLWebRTCImpl::init()
nullptr /* video_decoder_factory */,
nullptr /* audio_mixer */,
mAudioProcessingModule);
mWorkerThread->PostTask(
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
// It seems that this code is also called by one of the other callback functions
// and ends up creating a 2nd observer,which when there was a hardware change,
// would cause multiple messages to be dumped to the queue at the same time and
// cause a possible race condition/spin lock issue.
/* mWorkerThread->PostTask(
[this]()
{
if (mDeviceModule)
@ -348,7 +353,8 @@ void LLWebRTCImpl::init()
updateDevices();
}
});
*/
// </FS:minerjr> [FIRE-36022]
}
void LLWebRTCImpl::terminate()