gst-plugins-rs/net
François Laignel 0e6b9df932 net/webrtc: sink: abort stats collection before stopping the Signaller
In some rare cases, the webrtc-test entered a deadlock while executing
`WebRTCSink::unprepare`. Attaching gdb to a blocked instance showed:

* `gstrswebrtc::signaller:👿:Signaller::stop()` parked, waiting for a
  `Condvar` in `Signaller::stop()`. This was most likely awaiting for the
  receive task to complete while it was locked in `element.end_session()`.
  This code path is triggered from `unprepare` with the `State` `Mutex` locked.
* `webrtcsink:👿:WebRtcSink::process_stats` waiting for a contended `Mutex`,
  which is also the `State` `Mutex`. This prevented completion of the signal
  `gst_webrtc_bin_get_stats`.

This commit aborts the task in charge of periodically collecting stats and
ensures any remaining iteration completes before requesting the Signaller to
stop.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1176>
2023-05-02 15:22:43 +02:00
..
aws Update async-tungstenite and AWS SDK dependencies 2023-04-22 12:18:44 +03:00
hlssink3 Fix a couple of new Rust 1.69 clippy warnings 2023-04-22 12:18:44 +03:00
ndi net: ndi: Update to libloading 0.8 2023-04-22 11:56:13 +03:00
onvif Update versions to 0.10.6 2023-04-06 11:24:25 +03:00
raptorq Update versions to 0.10.6 2023-04-06 11:24:25 +03:00
reqwest Fix a couple of new Rust 1.69 clippy warnings 2023-04-22 12:18:44 +03:00
rtp rtpgccbwe: Don't process empty lists 2023-04-22 11:56:37 +03:00
webrtc net/webrtc: sink: abort stats collection before stopping the Signaller 2023-05-02 15:22:43 +02:00
webrtchttp Update versions to 0.10.6 2023-04-06 11:24:25 +03:00