[Bug 701856] qtdemux: Does allocation queries before setting caps on all pads

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Sat Jun 8 09:40:25 PDT 2013


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

Sebastian Dröge <slomo> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
                 CC|                            |slomo at circular-chaos.org
          Component|don't know                  |gst-plugins-good
   Target Milestone|HEAD                        |1.1.2
            Summary|A recent change somewhere   |qtdemux: Does allocation
                   |makes that file unplayable  |queries before setting caps
                   |/ discoverable.             |on all pads
     Ever Confirmed|0                           |1
           Severity|normal                      |blocker

--- Comment #1 from Sebastian Dröge <slomo at circular-chaos.org> 2013-06-08 16:40:16 UTC ---
Yes, that's because qtdemux is broken and decodebin became a bit more picky
about that :)

Please be more descriptive in the bug reports in the future. Saying that it
never pre-rolls for example would be more descriptive, and backtraces of all
threads would help too usually for such things :)


Problem is that qtdemux does allocation queries before setting caps on all
pads. Thread 5 in the backtrace below. I think it does that in that place, and
also another one. Needs to be fixed.

Thread 7 (Thread 0x7fffecb50700 (LWP 5128)):
#0  pthread_cond_wait@@GLIBC_2.3.2 ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007ffff7714a4f in g_cond_wait (cond=cond at entry=0x7fffe4019048, 
    mutex=mutex at entry=0x7fffe4018fd8)
    at /tmp/buildd/glib2.0-2.36.1/./glib/gthread-posix.c:756
#2  0x00007ffff7f1ad37 in do_probe_callbacks (pad=pad at entry=0x7fffe4018fc0, 
    info=info at entry=0x7fffecb4fc90, defaultval=defaultval at entry=GST_FLOW_OK)
    at gstpad.c:3189
#3  0x00007ffff7f5a86d in gst_pad_peer_query (pad=0x7fffe4018fc0, 
    query=query at entry=0x7fffe401d720) at gstpad.c:3579
#4  0x00007ffff7e93ddb in gst_single_queue_push_one (object=0x7fffe401d720, 
    sq=0x7fffe401da30, mq=0x7fffe400f020) at gstmultiqueue.c:1089
#5  gst_multi_queue_loop (pad=<optimized out>) at gstmultiqueue.c:1307
#6  0x00007ffff7f82659 in gst_task_func (task=0x775c60) at gsttask.c:316
#7  0x00007ffff76f9772 in g_thread_pool_thread_proxy (data=<optimized out>)
    at /tmp/buildd/glib2.0-2.36.1/./glib/gthreadpool.c:309
#8  0x00007ffff76f8f35 in g_thread_proxy (data=0x7fffe401d540)
    at /tmp/buildd/glib2.0-2.36.1/./glib/gthread.c:798
#9  0x00007ffff7273e0e in start_thread (arg=0x7fffecb50700)
    at pthread_create.c:311
#10 0x00007ffff6fa795d in clone ()
---Type <return> to continue, or q <return> to quit---
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 6 (Thread 0x7fffee295700 (LWP 5127)):
#0  pthread_cond_wait@@GLIBC_2.3.2 ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007ffff7714a4f in g_cond_wait (cond=cond at entry=0x419778, 
    mutex=mutex at entry=0x419768)
    at /tmp/buildd/glib2.0-2.36.1/./glib/gthread-posix.c:756
#2  0x00007ffff7e5ae72 in _gst_data_queue_wait_non_empty (
    queue=queue at entry=0x419700) at gstdataqueue.c:494
#3  0x00007ffff7e5c286 in gst_data_queue_pop (queue=0x419700, 
    item=item at entry=0x7fffee294dc8) at gstdataqueue.c:536
#4  0x00007ffff7e93394 in gst_multi_queue_loop (pad=<optimized out>)
    at gstmultiqueue.c:1187
#5  0x00007ffff7f82659 in gst_task_func (task=0x775b40) at gsttask.c:316
#6  0x00007ffff76f9772 in g_thread_pool_thread_proxy (data=<optimized out>)
    at /tmp/buildd/glib2.0-2.36.1/./glib/gthreadpool.c:309
#7  0x00007ffff76f8f35 in g_thread_proxy (data=0x7fffe4006800)
    at /tmp/buildd/glib2.0-2.36.1/./glib/gthread.c:798
#8  0x00007ffff7273e0e in start_thread (arg=0x7fffee295700)
    at pthread_create.c:311
#9  0x00007ffff6fa795d in clone ()
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
---Type <return> to continue, or q <return> to quit---

Thread 5 (Thread 0x7fffeea96700 (LWP 5126)):
#0  pthread_cond_wait@@GLIBC_2.3.2 ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007ffff7714a4f in g_cond_wait (cond=cond at entry=0x7fffe401dbc8, 
    mutex=mutex at entry=0x7fffe400f188)
    at /tmp/buildd/glib2.0-2.36.1/./glib/gthread-posix.c:756
#2  0x00007ffff7e91a4b in gst_multi_queue_sink_query (pad=<optimized out>, 
    parent=0x7fffe400f020, query=0x7fffe401d720) at gstmultiqueue.c:1626
#3  0x00007ffff7f5a38c in gst_pad_query (pad=pad at entry=0x7fffe4018d90, 
    query=query at entry=0x7fffe401d720) at gstpad.c:3459
#4  0x00007ffff7f5a972 in gst_pad_peer_query (pad=0x7fffe40182a0, 
    query=query at entry=0x7fffe401d720) at gstpad.c:3590
#5  0x00007fffeeda0fd7 in qtdemux_do_allocation (qtdemux=0x7fffe804c040, 
    stream=0x7fffe400af00) at qtdemux.c:5458
#6  0x00007fffeeda3206 in gst_qtdemux_add_stream (list=0x7fffe4006540, 
    stream=0x7fffe400af00, qtdemux=0x7fffe804c040) at qtdemux.c:5692
#7  qtdemux_expose_streams (qtdemux=qtdemux at entry=0x7fffe804c040)
    at qtdemux.c:8317
#8  0x00007fffeedb551f in gst_qtdemux_loop_state_header (
    qtdemux=0x7fffe804c040) at qtdemux.c:3105
#9  gst_qtdemux_loop (pad=0x7529e0) at qtdemux.c:4212
#10 0x00007ffff7f82659 in gst_task_func (task=0x7755a0) at gsttask.c:316
---Type <return> to continue, or q <return> to quit---
#11 0x00007ffff76f9772 in g_thread_pool_thread_proxy (data=<optimized out>)
    at /tmp/buildd/glib2.0-2.36.1/./glib/gthreadpool.c:309
#12 0x00007ffff76f8f35 in g_thread_proxy (data=0x7fffe8043f20)
    at /tmp/buildd/glib2.0-2.36.1/./glib/gthread.c:798
#13 0x00007ffff7273e0e in start_thread (arg=0x7fffeea96700)
    at pthread_create.c:311
#14 0x00007ffff6fa795d in clone ()
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 4 (Thread 0x7fffef7fe700 (LWP 5125)):
#0  0x00007ffff6f9c1bd in poll () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007ffff76d51fc in g_main_context_poll (n_fds=1, fds=0x7fffe00008c0, 
    timeout=-1, context=0x6d9b40, priority=<optimized out>)
    at /tmp/buildd/glib2.0-2.36.1/./glib/gmain.c:3995
#2  g_main_context_iterate (context=context at entry=0x6d9b40, 
    block=block at entry=1, dispatch=dispatch at entry=1, self=<optimized out>)
    at /tmp/buildd/glib2.0-2.36.1/./glib/gmain.c:3696
#3  0x00007ffff76d5324 in g_main_context_iteration (context=0x6d9b40, 
    may_block=may_block at entry=1)
    at /tmp/buildd/glib2.0-2.36.1/./glib/gmain.c:3762
#4  0x00007ffff76d5381 in glib_worker_main (data=<optimized out>)
    at /tmp/buildd/glib2.0-2.36.1/./glib/gmain.c:5427
#5  0x00007ffff76f8f35 in g_thread_proxy (data=0x74f190)
---Type <return> to continue, or q <return> to quit---
    at /tmp/buildd/glib2.0-2.36.1/./glib/gthread.c:798
#6  0x00007ffff7273e0e in start_thread (arg=0x7fffef7fe700)
    at pthread_create.c:311
#7  0x00007ffff6fa795d in clone ()
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 3 (Thread 0x7fffeffff700 (LWP 5124)):
#0  pthread_cond_wait@@GLIBC_2.3.2 ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007ffff7714a4f in g_cond_wait (cond=cond at entry=0x775060, 
    mutex=mutex at entry=0x775018)
    at /tmp/buildd/glib2.0-2.36.1/./glib/gthread-posix.c:756
#2  0x00007ffff7f82804 in gst_task_func (task=0x775000) at gsttask.c:301
#3  0x00007ffff76f9772 in g_thread_pool_thread_proxy (data=<optimized out>)
    at /tmp/buildd/glib2.0-2.36.1/./glib/gthreadpool.c:309
#4  0x00007ffff76f8f35 in g_thread_proxy (data=0x74f230)
    at /tmp/buildd/glib2.0-2.36.1/./glib/gthread.c:798
#5  0x00007ffff7273e0e in start_thread (arg=0x7fffeffff700)
    at pthread_create.c:311
#6  0x00007ffff6fa795d in clone ()
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 2 (Thread 0x7ffff4dec700 (LWP 5123)):
---Type <return> to continue, or q <return> to quit---
#0  0x00007ffff727aacd in nanosleep () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007ffff76fa572 in g_usleep (microseconds=microseconds at entry=50000)
    at /tmp/buildd/glib2.0-2.36.1/./glib/gtimer.c:261
#2  0x00007ffff7e121cf in gst_xvimagesink_event_thread (xvimagesink=0x412f90)
    at xvimagesink.c:582
#3  0x00007ffff76f8f35 in g_thread_proxy (data=0x74f370)
    at /tmp/buildd/glib2.0-2.36.1/./glib/gthread.c:798
#4  0x00007ffff7273e0e in start_thread (arg=0x7ffff4dec700)
    at pthread_create.c:311
#5  0x00007ffff6fa795d in clone ()
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 1 (Thread 0x7ffff7ebc700 (LWP 5103)):
#0  0x00007ffff6f9c1bd in poll () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007ffff76d51fc in g_main_context_poll (n_fds=2, fds=0x6d31e0, 
    timeout=-1, context=0x6d3000, priority=<optimized out>)
    at /tmp/buildd/glib2.0-2.36.1/./glib/gmain.c:3995
#2  g_main_context_iterate (context=0x6d3000, block=block at entry=1, 
    dispatch=dispatch at entry=1, self=<optimized out>)
    at /tmp/buildd/glib2.0-2.36.1/./glib/gmain.c:3696
#3  0x00007ffff76d56da in g_main_loop_run (loop=0x42a2e0)
    at /tmp/buildd/glib2.0-2.36.1/./glib/gmain.c:3895
#4  0x00007ffff7f2f654 in gst_bus_poll (bus=bus at entry=0x4879d0, 
---Type <return> to continue, or q <return> to quit---
    events=events at entry=GST_MESSAGE_ANY, timeout=<optimized out>)
    at gstbus.c:1082
#5  0x0000000000404cd8 in event_loop (pipeline=0x766150, 
    blocking=blocking at entry=1, do_progress=do_progress at entry=1, 
    target_state=target_state at entry=GST_STATE_PAUSED) at gst-launch.c:519
#6  0x0000000000403d2a in main (argc=7, argv=0x7fffffffba98)
    at gst-launch.c:1066

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