[gstreamer-bugs] [Bug 602887] New: shout2send element won't change from PLAYING state to NULL

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Tue Nov 24 19:11:42 PST 2009


https://bugzilla.gnome.org/show_bug.cgi?id=602887
  GStreamer | gst-plugins-good | 0.10.14

           Summary: shout2send element won't change from PLAYING state to
                    NULL
    Classification: Desktop
           Product: GStreamer
           Version: 0.10.14
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-plugins-good
        AssignedTo: gstreamer-bugs at lists.sourceforge.net
        ReportedBy: vectro at vectro.org
         QAContact: gstreamer-bugs at lists.sourceforge.net
      GNOME target: ---
     GNOME version: ---


Created an attachment (id=148428)
 --> (https://bugzilla.gnome.org/attachment.cgi?id=148428)
Test case which demonstrates the problem.

... more precisely, the element will change to NULL, but only once the stream
is complete. gst_element_set_state blocks until that point, waiting for a
mutex.

Attached is a test case which demonstrates the behavior. Provide an ogg vorbis
file at least 30 seconds long; the program should end after only 15 seconds,
but instead does not end until the audio file is complete.

During this time, there are two threads (the pipeline thread and the control
thread, I suppose.) The primary thread has a backtrace like this:

#0  0xb806f430 in __kernel_vsyscall ()                                          
#1  0xb7d46cf9 in __lll_lock_wait () from /lib/tls/i686/cmov/libpthread.so.0    
#2  0xb7d42129 in _L_lock_89 () from /lib/tls/i686/cmov/libpthread.so.0         
#3  0xb7d41a32 in pthread_mutex_lock () from /lib/tls/i686/cmov/libpthread.so.0 
#4  0xb79a0455 in gst_base_sink_change_state (element=0x9d90090,                
    transition=GST_STATE_CHANGE_PLAYING_TO_PAUSED) at gstbasesink.c:4106        
#5  0xb7fd02c8 in gst_element_change_state (element=0x9d90090,                  
    transition=GST_STATE_CHANGE_PLAYING_TO_PAUSED) at gstelement.c:2427         
#6  0xb7fd322c in gst_element_set_state_func (element=0x9d90090,
state=GST_STATE_PAUSED)
    at gstelement.c:2377                                                        
#7  0xb7fcf4f2 in gst_element_set_state (element=0x9d90090,
state=GST_STATE_PAUSED)     
    at gstelement.c:2280                                                        
#8  0xb7fc12f7 in gst_bin_change_state_func (element=0x9d840a8,                 
    transition=GST_STATE_CHANGE_PLAYING_TO_PAUSED) at gstbin.c:2062             
#9  0xb7ff2f9a in gst_pipeline_change_state (element=0x9d840a8,                 
    transition=GST_STATE_CHANGE_PLAYING_TO_PAUSED) at gstpipeline.c:465         
#10 0xb7fd02c8 in gst_element_change_state (element=0x9d840a8,                  
    transition=GST_STATE_CHANGE_PLAYING_TO_PAUSED) at gstelement.c:2427         
#11 0xb7fd322c in gst_element_set_state_func (element=0x9d840a8,
state=GST_STATE_NULL)  
    at gstelement.c:2377                                                        
#12 0xb7fcf4f2 in gst_element_set_state (element=0x9d840a8,
state=GST_STATE_NULL)       
    at gstelement.c:2280                                                        
#13 0x080488dc in gst_element_set_state_sync (element=0x9d840a8,
state=GST_STATE_NULL)  
    at testcase.c:20

while the pipeline thread is actively playing, such as in the following
backtrace:
#0  0xb806f430 in __kernel_vsyscall ()
#1  0xb7cb37b1 in select () from /lib/tls/i686/cmov/libc.so.6
#2  0xb7a2af60 in _shout_timing_sleep () from /usr/lib/libshout.so.3
#3  0xb7a282e4 in shout_sync () from /usr/lib/libshout.so.3
#4  0xb7a349bf in gst_shout2send_render (basesink=0x9d90090, buf=0x9d95288)
    at gstshout2.c:605
#5  0xb7999a20 in gst_base_sink_render_object (basesink=0x9d90090,
pad=0x9d8d100,
    obj=0x9d95288) at gstbasesink.c:2359
#6  0xb799aaa8 in gst_base_sink_queue_object_unlocked (basesink=0x9d90090,
    pad=0x9d8d100, obj=0x9d95288, prerollable=1) at gstbasesink.c:2566
#7  0xb799b20d in gst_base_sink_chain_unlocked (basesink=0x9d90090,
pad=0x9d8d100,
    buf=0x9d95288) at gstbasesink.c:2923
#8  0xb799b725 in gst_base_sink_chain (pad=0x9d8d100, buf=0x9d95288)
    at gstbasesink.c:2964
#9  0xb7fe9ac5 in gst_pad_chain_unchecked (pad=0x9d8d100, buffer=0x9d95288)
    at gstpad.c:3890
#10 0xb7feaeba in gst_pad_push (pad=0x9d8d040, buffer=0x9d95288) at
gstpad.c:4057
#11 0xb79a5c81 in gst_base_src_loop (pad=0x9d8d040) at gstbasesrc.c:2275
#12 0xb800c593 in gst_task_func (task=0x9d92c20, tclass=0x9c8ed88) at
gsttask.c:192
#13 0xb7db9e26 in g_thread_pool_thread_proxy (data=0x9c82230)
    at /build/buildd/glib2.0-2.20.1/glib/gthreadpool.c:265
#14 0xb7db87bf in g_thread_create_proxy (data=0x9d8ffd0)
    at /build/buildd/glib2.0-2.20.1/glib/gthread.c:635
#15 0xb7d404ff in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#16 0xb7cbb49e in clone () from /lib/tls/i686/cmov/libc.so.6

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