[Bug 737794] New: multiqueue: deadlock if queue overruns with serialized events

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Thu Oct 2 13:04:22 PDT 2014


https://bugzilla.gnome.org/show_bug.cgi?id=737794
  GStreamer | gstreamer (core) | git

           Summary: multiqueue: deadlock if queue overruns with serialized
                    events
    Classification: Platform
           Product: GStreamer
           Version: git
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gstreamer (core)
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: aconchillo at gmail.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


If a serialzed event goes into a queue but the queue overruns we hit a deadlock
on the multiqueue lock. See Thread 21:


Thread 21 (Thread 0x7f05d4ff9700 (LWP 59217)):
#0  __lll_lock_wait () at
../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:132
#1  0x00007f065369909b in _L_lock_1006 () from
/lib/x86_64-linux-gnu/libpthread.so.0
#2  0x00007f065369901c in __pthread_mutex_lock (mutex=0x7f05f03e63c0) at
pthread_mutex_lock.c:101
#3  0x00007f06509539e7 in g_mutex_lock (mutex=<optimized out>) at
gthread-posix.c:216
#4  0x00007f0648f1bb0e in single_queue_overrun_cb (dq=<optimized out>,
sq=0x7f05f06e1b50) at gstmultiqueue.c:2058
#5  0x00007f064ddea392 in gst_data_queue_push (queue=0x7f04e47cb160,
item=0x7f05f05d9560) at gstdataqueue.c:511
#6  0x00007f0648f1b5aa in gst_multi_queue_sink_query (pad=<optimized out>,
parent=0x7f063c028c10, query=0x7f04d35bd050) at gstmultiqueue.c:1822
#7  0x00007f065144c10e in gst_pad_query (pad=0x7f063c04f6e0,
query=0x7f04d35bd050) at gstpad.c:3584
#8  0x00007f065144c709 in gst_pad_peer_query (pad=0x7f05bc96f5d0,
query=0x7f04d35bd050) at gstpad.c:3715
#9  0x00007f065144ca5f in query_forward_func (pad=0x7f05bc96f5d0,
data=0x7f05d4ff8a90) at gstpad.c:3040
#10 0x00007f065144b32a in gst_pad_forward (pad=0x7f05e801cde0,
forward=0x7f065144c990 <query_forward_func>, user_data=0x7f05d4ff8a90) at
gstpad.c:2796
#11 0x00007f065144b631 in gst_pad_query_default (pad=0x7f05e801cde0,
parent=<optimized out>, query=0x7f04d35bd050) at gstpad.c:3104
#12 0x00007f065144c10e in gst_pad_query (pad=0x7f05e801cde0,
query=0x7f04d35bd050) at gstpad.c:3584
#13 0x00007f065144c709 in gst_pad_peer_query (pad=0x7f04e4047480,
query=0x7f04d35bd050) at gstpad.c:3715
#14 0x00007f0648f224a2 in gst_queue_push_one (queue=0x7f04d144f4d0) at
gstqueue.c:1214
#15 gst_queue_loop (pad=<optimized out>) at gstqueue.c:1277
#16 0x00007f0651474eff in gst_task_func (task=0x7f05a4029290) at gsttask.c:317
#17 0x00007f0650936d18 in g_thread_pool_thread_proxy (data=<optimized out>) at
gthreadpool.c:307
#18 0x00007f06509364b5 in g_thread_proxy (data=0x7f04e4163450) at gthread.c:764
#19 0x00007f0653696e9a in start_thread (arg=0x7f05d4ff9700) at
pthread_create.c:308
#20 0x00007f06533c431d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#21 0x0000000000000000 in ?? ()

Thread 19 (Thread 0x7f05a3fff700 (LWP 59221)):
#0  __lll_lock_wait () at
../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:132
#1  0x00007f065369909b in _L_lock_1006 () from
/lib/x86_64-linux-gnu/libpthread.so.0
#2  0x00007f065369901c in __pthread_mutex_lock (mutex=0x7f05f03e63c0) at
pthread_mutex_lock.c:101
#3  0x00007f06509539e7 in g_mutex_lock (mutex=<optimized out>) at
gthread-posix.c:216
#4  0x00007f0648f1d205 in gst_multi_queue_loop (pad=<optimized out>) at
gstmultiqueue.c:1460
#5  0x00007f0651474eff in gst_task_func (task=0x7f0514027950) at gsttask.c:317
#6  0x00007f0650936d18 in g_thread_pool_thread_proxy (data=<optimized out>) at
gthreadpool.c:307
#7  0x00007f06509364b5 in g_thread_proxy (data=0x7f05bc002990) at gthread.c:764
#8  0x00007f0653696e9a in start_thread (arg=0x7f05a3fff700) at
pthread_create.c:308
#9  0x00007f06533c431d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#10 0x0000000000000000 in ?? ()

Thread 55 (Thread 0x7f05f6bbd700 (LWP 55195)):
#0  __lll_lock_wait () at
../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:132
#1  0x00007f065369909b in _L_lock_1006 () from
/lib/x86_64-linux-gnu/libpthread.so.0
#2  0x00007f065369901c in __pthread_mutex_lock (mutex=0x7f05f03e63c0) at
pthread_mutex_lock.c:101
#3  0x00007f06509539e7 in g_mutex_lock (mutex=<optimized out>) at
gthread-posix.c:216
#4  0x00007f0648f1e1ef in gst_multi_queue_change_state (element=0x7f063c028c10,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstmultiqueue.c:799
#5  0x00007f065142fc6c in gst_element_change_state (element=<optimized out>,
transition=<optimized out>) at gstelement.c:2602
#6  0x00007f06514305ef in gst_element_set_state_func (element=0x7f063c028c10,
state=GST_STATE_READY) at gstelement.c:2558
#7  0x00007f0651411ce0 in gst_bin_element_set_state (next=GST_STATE_READY,
current=GST_STATE_PAUSED, start_time=0, base_time=673644026100847,
element=0x7f063c028c10, bin=0x7f04dc750950) at gstbin.c:2328
#8  gst_bin_change_state_func (element=0x7f04dc750950,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstbin.c:2665
#9  0x00007f065142fc6c in gst_element_change_state (element=<optimized out>,
transition=<optimized out>) at gstelement.c:2602
#10 0x00007f06514305ef in gst_element_set_state_func (element=0x7f04dc750950,
state=GST_STATE_READY) at gstelement.c:2558
#11 0x00007f0651411ce0 in gst_bin_element_set_state (next=GST_STATE_READY,
current=GST_STATE_PAUSED, start_time=0, base_time=673644026100847,
element=0x7f04dc750950, bin=0x7f04dcde0ae0) at gstbin.c:2328
#12 gst_bin_change_state_func (element=0x7f04dcde0ae0,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstbin.c:2665
#13 0x00007f065142fc6c in gst_element_change_state (element=<optimized out>,
transition=<optimized out>) at gstelement.c:2602
#14 0x00007f06514305ef in gst_element_set_state_func (element=0x7f04dcde0ae0,
state=GST_STATE_READY) at gstelement.c:2558
#15 0x00007f0651411ce0 in gst_bin_element_set_state (next=GST_STATE_READY,
current=GST_STATE_PAUSED, start_time=0, base_time=673644026100847,
element=0x7f04dcde0ae0, bin=0x7f063c03b740) at gstbin.c:2328
#16 gst_bin_change_state_func (element=0x7f063c03b740,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstbin.c:2665
#17 0x00007f065142fc6c in gst_element_change_state (element=<optimized out>,
transition=<optimized out>) at gstelement.c:2602
#18 0x00007f065142ff2b in gst_element_change_state (element=0x7f063c03b740,
transition=<optimized out>) at gstelement.c:2646
#19 0x00007f06514305ef in gst_element_set_state_func (element=0x7f063c03b740,
state=GST_STATE_NULL) at gstelement.c:2558
#20 0x00007f0651919691 in finish_unprepare (media=0x7f063c034e30) at
rtsp-media.c:2403
#21 0x00007f065191df25 in gst_rtsp_media_unprepare (media=0x7f063c034e30) at
rtsp-media.c:2523
#22 0x00007f065191e211 in gst_rtsp_media_prepare (media=0x7f063c034e30,
thread=0x7f05dc0014f0) at rtsp-media.c:2385
#23 0x00007f065192d201 in find_media (client=0x7f04e47b1380,
ctx=0x7f05f6bbc9c0, path=0x7f05f06da0d0 "XXXXXXXXX", matched=<optimized out>)
at rtsp-client.c:619
#24 0x00007f065192eb79 in handle_describe_request (ctx=0x7f05f6bbc9c0,
client=0x7f04e47b1380) at rtsp-client.c:2071
#25 handle_request (client=0x7f04e47b1380, request=<optimized out>) at
rtsp-client.c:2407
#26 0x00007f06519327a5 in gst_rtsp_client_handle_message (client=<optimized
out>, message=0x7f064402a488) at rtsp-client.c:2974
#27 0x00007f06516f9acd in gst_rtsp_source_dispatch_read (stream=<optimized
out>, watch=0x7f0644029400) at gstrtspconnection.c:3241
#28 0x00007f06509123f9 in g_main_dispatch (context=0x7f0644021550) at
gmain.c:3064
#29 g_main_context_dispatch (context=0x7f0644021550) at gmain.c:3663
#30 0x00007f0650912738 in g_main_context_iterate (dispatch=1, block=<optimized
out>, context=0x7f0644021550, self=<optimized out>) at gmain.c:3734
#31 g_main_context_iterate (context=0x7f0644021550, block=<optimized out>,
dispatch=1, self=<optimized out>) at gmain.c:3671
#32 0x00007f0650912a4a in g_main_loop_run (loop=0x7f06440277e0) at gmain.c:3928
#33 0x00007f0651917938 in do_loop (thread=0x7f064401bb30) at
rtsp-thread-pool.c:329
#34 0x00007f0650936d18 in g_thread_pool_thread_proxy (data=<optimized out>) at
gthreadpool.c:307
#35 0x00007f06509364b5 in g_thread_proxy (data=0x7f064003dc50) at gthread.c:764
#36 0x00007f0653696e9a in start_thread (arg=0x7f05f6bbd700) at
pthread_create.c:308
#37 0x00007f06533c431d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#38 0x0000000000000000 in ?? ()

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- 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