[Bug 796160] New: Raise when client sending some udp packets before play request.

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Wed May 16 07:16:15 UTC 2018


https://bugzilla.gnome.org/show_bug.cgi?id=796160

            Bug ID: 796160
           Summary: Raise when client sending some udp packets before play
                    request.
    Classification: Platform
           Product: GStreamer
           Version: git master
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gst-rtsp-server
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: goran.jonsson at axis.com
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

Created attachment 372108
  --> https://bugzilla.gnome.org/attachment.cgi?id=372108&action=edit
patch in gst-rtsp-server ( minimum for solving problem )

There is a race in plug_src in rtsp-stream between setting src to 
playing and linking the pads, when src is udpsrc and client sending 
udp data before play. Then the udpsrc want to push data on src pad before it's 
linked this causing a link error.

We have come across a client doing that.

When client is not sending udp data the thread caused by setting 
udp src to playing is stuck at.   

#0  0x00007ffff6a81aed in poll () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007ffff7540da5 in g_socket_condition_timed_wait () from
/usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#2  0x00007fffd5dd10d6 in gst_udpsrc_fill (psrc=0x7ffff006c4e0, outbuf=0x2) at
gstudpsrc.c:877
#3  0x00007ffff6567de5 in gst_push_src_fill (bsrc=0x1,
offset=18446744073709551615, length=4096, ret=0x7fffd0006020) at
gstpushsrc.c:174
#4  0x00007ffff654ac6f in gst_base_src_default_create (src=0x7ffff006c4e0,
offset=18446744073709551615, size=4096, buffer=0x7fffd5dc9c20) at
gstbasesrc.c:1525
#5  0x00007ffff65680fb in gst_push_src_create (bsrc=0x7ffff006c4e0,
offset=18446744073709551615, length=4096, ret=0x7fffd5dc9c20) at
gstpushsrc.c:137
#6  0x00007ffff654d3dd in gst_base_src_get_range (src=0x7ffff006c4e0, offset=2,
length=4096, buf=0xffffffffffffffff) at gstbasesrc.c:2528
#7  0x00007ffff654ffa0 in gst_base_src_loop (pad=0x7ffff004e530) at
gstbasesrc.c:2875
#8  0x00007ffff78efcb1 in gst_task_func (task=0x7ffff00364d0) at gsttask.c:332
#9  0x00007ffff6fdb1d8 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#10 0x00007ffff6fda845 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#11 0x00007ffff6d55064 in start_thread (arg=0x7fffd5dca700) at
pthread_create.c:309
#12 0x00007ffff6a8a62d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:111

This is not the case when client sending udp data just befor play request !!!

One solution is to remove the strange part in plug_src were setting a 
single element to playing before adding to bin. Instead we sync
the element with the state in bin after it have been added to bin.  

Please find attachment
(Fix problem) 
0001-rtsp-stream-Give-all-elements-in-pipeline-same-statu.patch
(Refactor)
0002-rtsp-stream-Refactor-plug_src.patch

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list