[Bug 692358] appsrc deadlock setting the pipeline to NULL state

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Thu Jan 24 02:28:19 PST 2013


https://bugzilla.gnome.org/show_bug.cgi?id=692358
  GStreamer | gst-plugins-base | unspecified

--- Comment #8 from Nicola <lists at svrinformatica.it> 2013-01-24 10:28:12 UTC ---
Created an attachment (id=234291)
 --> (https://bugzilla.gnome.org/attachment.cgi?id=234291)
small test app that reproduce the issue

To reproduce close the xvimagesink window so an error is posted on the bus,
please note that the deadlock does not happen always, the test app run the same
pipeline 100 times, I was able to reproduce at most after 40 try, here is the
backtrace from the test app

Thread 4 (Thread 0x7ffff2b80700 (LWP 9589)):
#0  pthread_cond_wait@@GLIBC_2.3.2 ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007ffff742282f in g_cond_wait (cond=0x7fffe40039b0, 
    mutex=<optimized out>)
    at /build/buildd/glib2.0-2.32.3/./glib/gthread-posix.c:746
#2  0x00007ffff78e7bca in gst_app_src_push_buffer_full (appsrc=0x7f2890, 
    buffer=0x7fffe8002160, steal_ref=1) at gstappsrc.c:1476
#3  0x0000000000400e11 in on_new_buffer_from_source ()
#4  0x00007ffff78e9a2a in gst_app_sink_render_common (psink=0x7d9810, 
    data=0x7fffe8002160, is_list=0) at gstappsink.c:795
#5  0x00007ffff5f27cb6 in gst_base_sink_render_object (basesink=0x7d9810, 
    obj_type=<optimized out>, obj=0x7fffe8002160, pad=<optimized out>)
    at gstbasesink.c:3012
#6  0x00007ffff5f2ac3f in gst_base_sink_queue_object_unlocked (
    basesink=0x7d9810, obj_type=2 '\002', obj=0x7fffe8002160, 
    prerollable=<optimized out>, pad=<optimized out>) at gstbasesink.c:3293
#7  0x00007ffff5f2af97 in gst_base_sink_chain_unlocked (basesink=0x7d9810, 
    obj_type=2 '\002', obj=0x7fffe8002160, pad=<optimized out>)
    at gstbasesink.c:3675
#8  0x00007ffff5f2b3a8 in gst_base_sink_chain_main (basesink=0x7d9810, 
    pad=0x7ee4d0, obj_type=2 '\002', obj=0x7fffe8002160) at gstbasesink.c:3713
---Type <return> to continue, or q <return> to quit---
#9  0x00007ffff7b4ef9a in gst_pad_push (pad=0x7ee350, buffer=0x7fffe8002160)
    at gstpad.c:4715
#10 0x00007ffff5f30cba in gst_base_src_loop (pad=0x7ee350) at gstbasesrc.c:2567
#11 0x00007ffff7b75adc in gst_task_func (task=0x819690) at gsttask.c:328
#12 0x00007ffff7409248 in g_thread_pool_thread_proxy (data=<optimized out>)
    at /build/buildd/glib2.0-2.32.3/./glib/gthreadpool.c:309
#13 0x00007ffff74089e5 in g_thread_proxy (data=0x7f0450)
    at /build/buildd/glib2.0-2.32.3/./glib/gthread.c:801
#14 0x00007ffff7189e9a in start_thread (arg=0x7ffff2b80700)
    at pthread_create.c:308
#15 0x00007ffff6eb6cbd in clone ()
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#16 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7ffff7fcc700 (LWP 9584)):
#0  __lll_lock_wait ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:132
#1  0x00007ffff718c09b in _L_lock_1006 ()
   from /lib/x86_64-linux-gnu/libpthread.so.0
#2  0x00007ffff718c01c in __pthread_mutex_lock (mutex=0x7f8d90)
    at pthread_mutex_lock.c:101
#3  0x00007ffff74225a1 in g_mutex_lock (mutex=<optimized out>)
    at /build/buildd/glib2.0-2.32.3/./glib/gthread-posix.c:208
---Type <return> to continue, or q <return> to quit---
#4  0x00007ffff5f2422d in gst_base_sink_change_state (element=0x7d9810, 
    transition=GST_STATE_CHANGE_PLAYING_TO_PAUSED) at gstbasesink.c:5099
#5  0x00007ffff7b3290c in gst_element_change_state (element=0x7d9810, 
    transition=<optimized out>) at gstelement.c:2782
#6  0x00007ffff7b33230 in gst_element_set_state_func (element=0x7d9810, 
    state=GST_STATE_PAUSED) at gstelement.c:2738
#7  0x00007ffff7b1fc89 in gst_bin_element_set_state (next=GST_STATE_PAUSED, 
    current=GST_STATE_PLAYING, start_time=508322322, base_time=9604900887363, 
    element=0x7d9810, bin=0x7ef4a0) at gstbin.c:2273
#8  gst_bin_change_state_func (element=0x7ef4a0, 
    transition=GST_STATE_CHANGE_PLAYING_TO_PAUSED) at gstbin.c:2579
#9  0x00007ffff7b526f2 in gst_pipeline_change_state (element=0x7ef4a0, 
    transition=GST_STATE_CHANGE_PLAYING_TO_PAUSED) at gstpipeline.c:484
#10 0x00007ffff7b3290c in gst_element_change_state (element=0x7ef4a0, 
    transition=<optimized out>) at gstelement.c:2782
#11 0x00007ffff7b33230 in gst_element_set_state_func (element=0x7ef4a0, 
    state=GST_STATE_NULL) at gstelement.c:2738
#12 0x0000000000400f99 in on_sink_message ()
#13 0x00007ffff7b24074 in gst_bus_source_dispatch (source=0x80f830, 
    callback=0x400ef8 <on_sink_message>, user_data=0x603070) at gstbus.c:764
#14 0x00007ffff73e6d53 in g_main_dispatch (context=0x7ac3a0)
    at /build/buildd/glib2.0-2.32.3/./glib/gmain.c:2539
#15 g_main_context_dispatch (context=0x7ac3a0)
---Type <return> to continue, or q <return> to quit---
    at /build/buildd/glib2.0-2.32.3/./glib/gmain.c:3075
#16 0x00007ffff73e70a0 in g_main_context_iterate (dispatch=1, 
    block=<optimized out>, context=0x7ac3a0, self=<optimized out>)
    at /build/buildd/glib2.0-2.32.3/./glib/gmain.c:3146
#17 g_main_context_iterate (context=0x7ac3a0, block=<optimized out>, 
    dispatch=1, self=<optimized out>)
    at /build/buildd/glib2.0-2.32.3/./glib/gmain.c:3083
#18 0x00007ffff73e749a in g_main_loop_run (loop=0x6033f0)
    at /build/buildd/glib2.0-2.32.3/./glib/gmain.c:3340
#19 0x00000000004011e2 in main ()

-- 
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