After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 728772 - rtspconnection: stuck in teardown
rtspconnection: stuck in teardown
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
unspecified
Other Linux
: Normal normal
: 1.3.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2014-04-23 07:18 UTC by Göran Jönsson
Modified: 2014-04-30 14:38 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
gst-plugins-base patch (1.29 KB, patch)
2014-04-23 07:18 UTC, Göran Jönsson
committed Details | Review

Description Göran Jönsson 2014-04-23 07:18:19 UTC
Created attachment 274931 [details] [review]
gst-plugins-base patch

This when tunneling and drop-backlog parameter is FALSE.
This is related to tickets
https://bugzilla.gnome.org/show_bug.cgi?id=725898
and 
https://bugzilla.gnome.org/show_bug.cgi?id=728153

If reciving a teardown from remote when the watch queue is full the time
between 

gst_rtsp_watch_set_flushing (priv->watch, TRUE);
,,
gst_rtsp_watch_set_flushing (priv->watch, FALSE);

is not enough to make room in queue for teardown response
This since handle-teardown and the events that make it possible 
to get out of the situation, close and the possibility to write data
is handle by main loop.

This is backtrace from situation.
  • #0 __pthread_cond_timedwait
    at pthread_cond_timedwait.c line 168
  • #1 g_cond_wait_until
    at /home/goranjn/FLASHDIR/DROPP_PACKETS_IMPORT_2/unpacked/libs/glib-IR2.36.4-1/glib/glib/gthread-posix.c line 859
  • #2 gst_rtsp_watch_wait_backlog
    at /home/goranjn/FLASHDIR/DROPP_PACKETS_IMPORT_2/libs/gst-plugins-base/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c line 3692
  • #3 do_send_message
    at /home/goranjn/FLASHDIR/DROPP_PACKETS_IMPORT_2/libs/gst-rtsp-server/gst-rtsp-server/gst/rtsp-server/rtsp-client.c line 2665
  • #4 send_message
    at /home/goranjn/FLASHDIR/DROPP_PACKETS_IMPORT_2/libs/gst-rtsp-server/gst-rtsp-server/gst/rtsp-server/rtsp-client.c line 476
  • #5 handle_teardown_request
    at /home/goranjn/FLASHDIR/DROPP_PACKETS_IMPORT_2/libs/gst-rtsp-server/gst-rtsp-server/gst/rtsp-server/rtsp-client.c line 846
  • #6 handle_request
    at /home/goranjn/FLASHDIR/DROPP_PACKETS_IMPORT_2/libs/gst-rtsp-server/gst-rtsp-server/gst/rtsp-server/rtsp-client.c line 2042
  • #7 gst_rtsp_client_handle_message
    at /home/goranjn/FLASHDIR/DROPP_PACKETS_IMPORT_2/libs/gst-rtsp-server/gst-rtsp-server/gst/rtsp-server/rtsp-client.c line 2596
  • #8 gst_rtsp_source_dispatch_read
    at /home/goranjn/FLASHDIR/DROPP_PACKETS_IMPORT_2/libs/gst-plugins-base/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c line 3109
  • #9 g_main_dispatch
    at /home/goranjn/FLASHDIR/DROPP_PACKETS_IMPORT_2/unpacked/libs/glib-IR2.36.4-1/glib/glib/gmain.c line 3061
  • #10 g_main_context_dispatch
    at /home/goranjn/FLASHDIR/DROPP_PACKETS_IMPORT_2/unpacked/libs/glib-IR2.36.4-1/glib/glib/gmain.c line 3637
  • #11 g_main_context_iterate
    at /home/goranjn/FLASHDIR/DROPP_PACKETS_IMPORT_2/unpacked/libs/glib-IR2.36.4-1/glib/glib/gmain.c line 3708
  • #12 g_main_loop_run
    at /home/goranjn/FLASHDIR/DROPP_PACKETS_IMPORT_2/unpacked/libs/glib-IR2.36.4-1/glib/glib/gmain.c line 3902
  • #13 do_loop
    at /home/goranjn/FLASHDIR/DROPP_PACKETS_IMPORT_2/libs/gst-rtsp-server/gst-rtsp-server/gst/rtsp-server/rtsp-thread-pool.c line 329
  • #14 g_thread_pool_thread_proxy
    at /home/goranjn/FLASHDIR/DROPP_PACKETS_IMPORT_2/unpacked/libs/glib-IR2.36.4-1/glib/glib/gthreadpool.c line 309
  • #15 g_thread_proxy
    at /home/goranjn/FLASHDIR/DROPP_PACKETS_IMPORT_2/unpacked/libs/glib-IR2.36.4-1/glib/glib/gthread.c line 798
  • #16 start_thread
    at pthread_create.c line 310
  • #17 __thread_start
    from target/mipsisa32r2el-axis-linux-gnu/lib/libc.so.6

Solution: To empty watchs queue when doing
gst_rtsp_watch_set_flushing (priv->watch, TRUE);

Attach patch
empty_queue_flushing.patch
Comment 1 Wim Taymans 2014-04-30 14:38:03 UTC
commit 9685e7a5835a0b532003832a5cde84e24aaf8ed0
Author: Göran Jönsson <goranjn@axis.com>
Date:   Wed Apr 23 08:06:36 2014 +0200

    rtspconnection: Empty queue when flush.
    
    Empty the watchs queue when calling
    gst_rtsp_watch_set_flushing with flushing variabel is TRUE.
    
    Fixes https://bugzilla.gnome.org/show_bug.cgi?id=728772