[Bug 684658] New: [0.11] assrender: stuck on first video frame with mewmew-vorbis-ssa.mkv

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Sun Sep 23 05:59:57 PDT 2012


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

           Summary: [0.11] assrender: stuck on first video frame with
                    mewmew-vorbis-ssa.mkv
    Classification: Platform
           Product: GStreamer
           Version: git
        OS/Version: Linux
            Status: NEW
          Severity: blocker
          Priority: Normal
         Component: gst-plugins-base
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: t.i.m at zen.co.uk
         QAContact: gstreamer-bugs at lists.freedesktop.org
                CC: bilboed at gmail.com
     GNOME version: ---


+++ This bug was initially created as a clone of Bug #683192 +++

For some reason mewmew-vorbis-ssa.mkv is stuck on the first frame with totem
and the playback test.
With totem there are invalid (-1) timestamp warnings, see bug #683189.
I'm sure this used to work not too long ago, not sure what changed, might be in
videodecoder.
Things work though if assrender is removed from the equation.


When shutting down the above, we deadlock. I wonder if locking in videodecoder
is right here: it pushes out buffers while still holding the
GST_VIDEO_DECODER_STREAM_LOCK, and when it gets a QoS event in another thread,
it takes the object lock and waits on the STREAM_LOCK as well and is stuck,
which is then the reason the sink can't shut down.

Thread 25 (Thread 0x7fd63aa1b700 (LWP 10585)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007fd643ce842f in g_cond_wait (cond=cond at entry=0x2880888,
mutex=mutex at entry=0x2880860) at
/tmp/buildd/glib2.0-2.32.3/./glib/gthread-posix.c:746
#2  0x00007fd640b89565 in gst_queue_chain (pad=<optimized out>,
parent=0x28805d0, buffer=0x7fd63c006c00) at gstqueue.c:941
...
#31 0x00007fd644615d56 in gst_pad_push (pad=<optimized out>,
buffer=buffer at entry=0x7fd63c006c00) at gstpad.c:3962
#32 0x00007fd641f1519e in gst_video_decoder_clip_and_push_buf
(decoder=decoder at entry=0x2734e00, buf=buf at entry=0x7fd63c006c00) at
gstvideodecoder.c:2412
#33 0x00007fd641f1b42e in gst_video_decoder_finish_frame (decoder=0x2734e00,
frame=frame at entry=0x7fd63c02ad30) at gstvideodecoder.c:2328
#34 0x00007fd638f09b21 in gst_ffmpegviddec_video_frame
(ffmpegdec=ffmpegdec at entry=0x2734e00, data=<optimized out>,
data at entry=0x7fd63c05f9c0 "", size=0, frame=frame at entry=0x7fd63c02ad30,
ret=ret at entry=0x7fd63aa1a3fc)
    at gstavviddec.c:1204
#35 0x00007fd638f09f2b in gst_ffmpegviddec_frame
(ffmpegdec=ffmpegdec at entry=0x2734e00, data=data at entry=0x7fd63c05f9c0 "",
size=size at entry=4661, got_data=got_data at entry=0x7fd63aa1a3f8,
frame=frame at entry=0x7fd63c02ad30, 
    ret=ret at entry=0x7fd63aa1a3fc) at gstavviddec.c:1261
#36 0x00007fd638f0a4b2 in gst_ffmpegviddec_handle_frame (decoder=0x2734e00,
frame=0x7fd63c02ad30) at gstavviddec.c:1378
#37 0x00007fd641f14714 in gst_video_decoder_decode_frame
(decoder=decoder at entry=0x2734e00, frame=0x7fd63c02ad30) at
gstvideodecoder.c:2569
#38 0x00007fd641f166d1 in gst_video_decoder_chain_forward
(decoder=decoder at entry=0x2734e00, buf=buf at entry=0x282c0c0,
at_eos=at_eos at entry=0) at gstvideodecoder.c:1693
#39 0x00007fd641f1777f in gst_video_decoder_chain (pad=<optimized out>,
parent=0x2734e00, buf=0x282c0c0) at gstvideodecoder.c:1954

Thread 6 (Thread 0x7fd62d325700 (LWP 10604)):
#0  __lll_lock_wait () at
../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
#1  0x00007fd643643354 in _L_lock_997 () from
/lib/x86_64-linux-gnu/libpthread.so.0
#2  0x00007fd6436431b7 in __pthread_mutex_lock (mutex=0x273b920) at
pthread_mutex_lock.c:82
#3  0x00007fd641f188ee in gst_video_decoder_src_event_default
(decoder=0x2734e00, event=0x2866060) at gstvideodecoder.c:1272
#4  0x00007fd64460d7c9 in gst_pad_send_event_unchecked
(pad=pad at entry=0x27d4020, event=event at entry=0x2866060,
type=type at entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at gstpad.c:4807
#5  0x00007fd64460df2a in gst_pad_push_event_unchecked
(pad=pad at entry=0x278b6c0, event=event at entry=0x2866060,
type=type at entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at gstpad.c:4503
#131 0x00007fd644616899 in gst_pad_push_event (pad=0x2832730, event=0x28660c0)
at gstpad.c:4629
#132 0x00007fd641a9a1d2 in gst_base_sink_send_qos (diff=<optimized out>,
time=41000000, proportion=<optimized out>, type=<optimized out>,
basesink=0x28531b0) at gstbasesink.c:2445
#133 gst_base_sink_perform_qos (dropped=<optimized out>, sink=0x28531b0) at
gstbasesink.c:2578
#134 gst_base_sink_chain_unlocked (basesink=basesink at entry=0x28531b0,
obj=obj at entry=0x282e520, is_list=466799000, pad=<error reading variable:
Unhandled dwarf expression opcode 0xfa>) at gstbasesink.c:3233
#135 0x00007fd641a9a69c in gst_base_sink_chain_main (basesink=0x28531b0,
pad=<optimized out>, obj=0x282e520, is_list=<optimized out>) at
gstbasesink.c:3318

Thread 1 (Thread 0x7fd644a92700 (LWP 10443)):
#0  __lll_lock_wait () at
../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
#1  0x00007fd64364336f in _L_lock_1145 () from
/lib/x86_64-linux-gnu/libpthread.so.0
#2  0x00007fd6436432ba in __pthread_mutex_lock (mutex=0x28539e0) at
pthread_mutex_lock.c:101
#3  0x00007fd643ce81b1 in g_mutex_lock (mutex=mutex at entry=0x28532d8) at
/tmp/buildd/glib2.0-2.32.3/./glib/gthread-posix.c:208
#4  0x00007fd641a9242c in gst_base_sink_change_state (element=0x28531b0,
transition=<optimized out>) at gstbasesink.c:4748
#5  0x00007fd62f7599ca in gst_xvimagesink_change_state (element=0x28531b0,
transition=GST_STATE_CHANGE_PLAYING_TO_PAUSED) at xvimagesink.c:1759
#27 0x00007fd6445fbb51 in gst_element_set_state_func (element=0x2750800,
state=GST_STATE_PAUSED) at gstelement.c:2524
#28 0x000000000040390a in main (argc=3, argv=0x7fff9bb2ca18) at
gst-launch.c:1156

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