gst-plugins-rs/net
François Laignel dc5ddd3022 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/1202>
2023-05-09 10:26:11 +02:00
..
aws Update to AWS SDK 0.27 and async-tungstenite 0.22 2023-05-02 15:30:00 +03:00
hlssink3 Fix a couple of new Rust 1.69 clippy warnings 2023-04-20 16:47:45 +03:00
ndi net: ndi: Update to libloading 0.8 2023-04-12 11:03:05 +03:00
onvif git: replace LICENSE file symlinks with copies 2023-04-04 14:26:37 +01:00
raptorq fix typos 2023-04-10 13:35:32 +02:00
reqwest Fix a couple of new Rust 1.69 clippy warnings 2023-04-20 16:47:45 +03:00
rtp rtpgccbwe: Don't process empty lists 2023-04-15 19:35:27 +02:00
webrtc net/webrtc: sink: abort stats collection before stopping the Signaller 2023-05-09 10:26:11 +02:00
webrtchttp Update minimum supported Rust version to 1.66 2023-02-20 11:09:01 +02:00