<div dir="ltr">Hi,<div><br></div><div>I added some comments on this Phabricator link a few days ago:</div><div><br></div><div><a href="https://phabricator.freedesktop.org/T120">https://phabricator.freedesktop.org/T120</a><br></div><div><br></div><div>but I suspect it's unmonitored, so I thought I'd write here as well. Apologies if you got the same info more than once.</div><div><br></div><div>Basically, some Janus users recently switched to libnice master and encountered a crash originated by a wrong state transition. Digging in the changes since 0.1.13, we found out about the g_assert that can get libnice to crash if the ICE state transition is considered to be invalid.</div><div><br></div><div><div>From the feedback we got on our forums, one of the crashes definitely occurred while trying to switch from GATHERING to CONNECTED, which does indeed seem not to be permitted in your state machine. A colleague had a look at the code, and found what may be a possibile state violation in conncheck.c:</div><div><br></div><div><a href="https://github.com/libnice/libnice/blob/master/agent/conncheck.c#L3413">https://github.com/libnice/libnice/blob/master/agent/conncheck.c#L3413</a><br></div><div><br></div><div>Apparently, the only condition avoiding a transition to CONNECTED is a state different from READY, which includes GATHERING too. Neither of us are experts in the libnice internals, though, so not sure if this is a red herring.</div></div><div><br></div><div>Does that sound like a good place to look into? If not, what may be the issue? Can it be that this unallowed transition is facilitated by our usage of trickle ICE? A quick "hack" in this specific instance might be simply "allowing" the GATHERING to CONNECTED transition inĀ agent_signal_component_state_change, but 1) there might be other transitions we're not aware of, and 2) not sure if this would just hide what might be a lingering problem that could come back to bite later.</div><div><br></div><div>Looking forward to your thoughts, thanks in advance,</div><div>Lorenzo</div></div>