Skip to content
This repository was archived by the owner on Mar 22, 2022. It is now read-only.
This repository was archived by the owner on Mar 22, 2022. It is now read-only.

Crash when adding datachannels #89

@Daniel4144

Description

@Daniel4144

Hi,
Occasionally the Unity editor crashed while initializing the PeerConnection without any error/warning.

While debugging with Visual Studio I get the following message instead of the crash:

Unhandled exception at 0x00007FF9765F8135 (Microsoft.MixedReality.WebRTC.Native.dll) in RemoteSupportHololens.exe: Fatal program exit requested.

This happened in "peer_connection.cpp" (Line number 324) in

void PeerConnection::OnDataChannelAdded(
    const DataChannel& data_channel) noexcept {
  // The channel must be owned by this PeerConnection, so must be known already.
  // It was added in AddDataChannel() when the DataChannel object was created.
  RTC_CHECK(  //<- EXCEPTION HERE
      std::find_if(data_channels_.begin(), data_channels_.end(),
                   [&data_channel](const std::shared_ptr<DataChannel>& other) {
                     return other.get() == &data_channel;
                   }) != data_channels_.end());

Call Stack:

Microsoft.MixedReality.WebRTC.Native.dll!abort() Line 77
[External Code]	
[Inline Frame] Microsoft.MixedReality.WebRTC.Native.dll!rtc::webrtc_checks_impl::LogStreamer<>::Call(const char *) Line 197
[Inline Frame] Microsoft.MixedReality.WebRTC.Native.dll!rtc::webrtc_checks_impl::FatalLogCall<0>::operator&(const rtc::webrtc_checks_impl::LogStreamer<> &) Line 271
Microsoft.MixedReality.WebRTC.Native.dll!Microsoft::MixedReality::WebRTC::PeerConnection::OnDataChannelAdded(const Microsoft::MixedReality::WebRTC::DataChannel & data_channel) Line 324
Microsoft.MixedReality.WebRTC.Native.dll!Microsoft::MixedReality::WebRTC::PeerConnection::AddDataChannel(int id, std::basic_string_view<char,std::char_traits<char> > label, bool ordered, bool reliable, void * dataChannelInteropHandle) Line 265
Microsoft.MixedReality.WebRTC.Native.dll!mrsPeerConnectionAddDataChannel(void * peerHandle, void * dataChannelInteropHandle, mrsDataChannelConfig config, mrsDataChannelCallbacks callbacks, void * * dataChannelHandleOut) Line 1048
[External Code]	

It looks like the crash only happens when adding several datachannels at once.
I tried adding only one channel and also adding several channels with a delay in between which both worked repeatedly.

As a workaround I add the channels delayed using coroutines, but I think this could be a bug.
Maybe someone else had the same issue?

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions