Scenario
Many Vivox Unreal SDK versions prior to 5.16.0.unr.0 include ensure()
statements on lines on or nearby 127, 144, and 160 of VivoxCore/Source/VivoxCore/Private/ChannelSession.cpp
. You can safely ignore these three ensures because encountering the condition which triggers any of these ensure statements is a built-in race condition. For example, when a local player leaves a voice channel, it is possible that a participant removed or updated event is being seen for another player slightly after the local player has seen the event that the local player has left the channel.
Resolution
As of the Vivox 5.16.0.unr.0 release, each of these three ensure statements have been removed from the Vivox Unreal SDK. If you are running into this issue, the best solution is to update. If you are unable to update the plugin right away, you can optionally remove the ensure statements from those lines in your current plugin source to avoid any problematic behavior.
For example, if line 144 reads:
if (ensure(_participants.Contains(ParticipantKey))) {
Then you can edit the line in your current plugin source to instead use:
if (_participants.Contains(ParticipantKey)) {