GNOME Bugzilla – Bug 771983
Deadlock when closing session and backlog is full.
Last modified: 2016-10-31 14:33:47 UTC
Created attachment 336252 [details] [review] gst-rtsp-server patch Basic: The fix for https://bugzilla.gnome.org/show_bug.cgi?id=736647 ( rtsp-client: Allow backlog to grow while expiring session ) is not working after https://bugzilla.gnome.org/show_bug.cgi?id=737690. How to reproduce: Set drop_backlog = FALSE and use rtp tunneled over TCP or HTTP and stream. Then suspend client or remove connection to client. What happens: When session times out the media state is not set null when backlog is allowed to grow. This will cause deadlock. Please not that cleanup_session never will be called since this is called when watch is destroyed and in this case all block because it's not possible to write to watch:s backlog.
Created attachment 336253 [details] [review] gst-rtsp-server patch
Created attachment 336254 [details] [review] gst-rtsp-server patch
commit dbf91ab231ad793646c6de540f105b4b24db9f25 Author: Göran Jönsson <goranjn@axis.com> Date: Mon Sep 26 11:16:04 2016 +0200 rtsp-client: Session filter in unwatch session Call session filter with filter_session_media as paramer in client_unwatch_session if using drop_backlog = FALSE. In client_unwatch_session its allowed to grow the watchs backlog. If using drop_backlog = FALSE and the backlog is full it will cause a deadlock when setting session media state to NULL if the backlog is not allowed to grow. https://bugzilla.gnome.org/show_bug.cgi?id=771983