ogv: Seeking OGV over HTTP often hangs
@ndufresne
Submitted by Nicolas Dufresne Link to original bug (#781147)
Description
Playing this pipeline:
gst-play-1.0 http://upload.wikimedia.org/wikipedia/commons/a/a4/Xacti-AC8EX-Sample_video-001.ogv
And seeking backward (back arrow), quite often hang. This is observed on git master and 1.10.4. From the back trace, pretty much everything is idles, and soup is waiting for data:
Thread 2 (Thread 0x7fffea168700 (LWP 5402)):
#0 0x00007ffff618901d in poll () at ../sysdeps/unix/syscall-template.S:84
#1 0x00007ffff69d4017 in poll (__timeout=<optimized out>, __nfds=<optimized out>, __fds=<optimized out>) at /usr/include/bits/poll2.h:46
#2 0x00007ffff69d4017 in g_poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at gpoll.c:124
#3 0x00007fffedb35055 in g_socket_condition_timed_wait (socket=<optimized out>, condition=<optimized out>, timeout=<optimized out>, cancellable=0x555555a20d70 [GCancellable], error=0x7fffe403c2c8)
at gsocket.c:3934
#4 0x00007fffedb35f7a in g_socket_receive_with_timeout (socket=0x7fffe4026520 [GSocket], buffer=0x7fffe4106cab "x\361i\317\311\032m(\213\034\235\245\247Χ\216M0\344\030\277\233\376\065\375ͽ\262ɯ\323x\361i\317\311\032m(\213\034\235\245\247Χ\216M0\344\030\277\233\376\065\375ͽ\362y\376\063\275'\310 L\262ɯ\323x\361i\317\311\032m(\213\034\235\245\247Χ\216M0\344\030\277\233\376\065\375ͽ\023'G\b\372\t\362y\376\063\275'\310 L\262ɯ\323x\361i\317\311\032m(\213\034\235\245\247Χ\216M0\344\030\277\233\376\065\375ͽ\327s\023\022\020&:\207ra\017pq\023'G\b\372\t\362y\376\063\275'\310 L\262ɯ\323x\361i\317\311\032m(\213\034\235\245\247Χ\216M0\344\030\277\233\376\065"..., size=5, timeout=-1, cancellable=0x555555a20d70 [GCancellable], error=0x7fffe403c2c8) at gsocket.c:2806
#5 0x00007fffedb1b961 in g_input_stream_read (stream=0x555555fa4670 [GSocketInputStream], buffer=0x7fffe4106cab, count=5, cancellable=0x555555a20d70 [GCancellable], error=0x7fffe403c2c8) at ginputstream.c:198
#6 0x00007fffeb59bb65 in g_tls_connection_gnutls_pull_func () at /usr/lib64/gio/modules/libgiognutls.so
#7 0x00007fffeaff8915 in _gnutls_stream_read (ms=0x7fffea16761c, pull_func=0x7fffeb59bb00 <g_tls_connection_gnutls_pull_func>, size=5, bufel=<synthetic pointer>, session=0x7fffe41a1400) at buffers.c:344
#8 0x00007fffeaff8915 in _gnutls_read (ms=0x7fffea16761c, pull_func=0x7fffeb59bb00 <g_tls_connection_gnutls_pull_func>, size=5, bufel=<synthetic pointer>, session=0x7fffe41a1400) at buffers.c:424
#9 0x00007fffeaff8915 in _gnutls_io_read_buffered (session=session@entry=0x7fffe41a1400, total=5, recv_type=recv_type@entry=4294967295, ms=0x7fffea16761c) at buffers.c:579
#10 0x00007fffeaff2c6f in recv_headers (ms=<optimized out>, record=0x7fffea167670, htype=4294967295, type=GNUTLS_APPLICATION_DATA, record_params=0x7fffd4004e00, session=0x7fffe41a1400) at record.c:1045
#11 0x00007fffeaff2c6f in _gnutls_recv_in_buffers (session=session@entry=0x7fffe41a1400, type=type@entry=GNUTLS_APPLICATION_DATA, htype=htype@entry=4294967295, ms=<optimized out>, ms@entry=0) at record.c:1173
#12 0x00007fffeaff44a1 in _gnutls_recv_int (session=0x7fffe41a1400, type=GNUTLS_APPLICATION_DATA, data=0x7fffe4104c40 "\350\a", data_size=8192, seq=0x0, ms=0) at record.c:1471
#13 0x00007fffeb59d71b in g_tls_connection_gnutls_read () at /usr/lib64/gio/modules/libgiognutls.so
#14 0x00007fffeb59f921 in g_tls_input_stream_gnutls_read () at /usr/lib64/gio/modules/libgiognutls.so
#15 0x00007fffedb1b961 in g_input_stream_read (stream=0x7fffe40760c0 [GTlsInputStreamGnutls], buffer=0x7fffe4104c40, count=8192, cancellable=0x555555a20d70 [GCancellable], error=0x7fffea167880)
at ginputstream.c:198
#16 0x00007fffedb1b961 in g_input_stream_read (stream=0x555555fa4430 [SoupFilterInputStream], buffer=0x7fffe4104c40, count=8192, cancellable=0x555555a20d70 [GCancellable], error=0x7fffea167880)
at ginputstream.c:198
#17 0x00007fffedeb3dfa in soup_filter_input_stream_read_until (fstream=0x555555fa4430 [SoupFilterInputStream], buffer=0x7fffe4102c30, length=length@entry=8192, boundary=boundary@entry=0x7fffedee7b8a, boundary_length=boundary_length@entry=1, blocking=blocking@entry=1, include_boundary=1, got_boundary=0x7fffea167940, cancellable=0x555555a20d70 [GCancellable], error=0x7fffea1679d0) at soup-filter-input-stream.c:226
#18 0x00007fffedeb3fa3 in soup_filter_input_stream_read_line (fstream=<optimized out>, buffer=<optimized out>, length=length@entry=8192, blocking=blocking@entry=1, got_line=got_line@entry=0x7fffea167940, cancellable=cancellable@entry=0x555555a20d70 [GCancellable], error=0x7fffea1679d0) at soup-filter-input-stream.c:186
#19 0x00007fffedebd8f9 in read_headers (error=0x7fffea1679d0, cancellable=0x555555a20d70 [GCancellable], blocking=1, msg=0x7fffe4007390 [SoupMessage]) at soup-message-io.c:224
---Type <return> to continue, or q <return> to quit---
#20 0x00007fffedebd8f9 in io_read (msg=msg@entry=0x7fffe4007390 [SoupMessage], blocking=blocking@entry=1, cancellable=cancellable@entry=0x555555a20d70 [GCancellable], error=error@entry=0x7fffea1679d0)
at soup-message-io.c:616
#21 0x00007fffedebdf3d in io_run_until (msg=msg@entry=0x7fffe4007390 [SoupMessage], blocking=blocking@entry=1, read_state=read_state@entry=SOUP_MESSAGE_IO_STATE_BODY, write_state=write_state@entry=SOUP_MESSAGE_IO_STATE_NOT_STARTED, cancellable=0x555555a20d70 [GCancellable], error=error@entry=0x7fffea167a40) at soup-message-io.c:982
#22 0x00007fffedebea12 in soup_message_io_run_until_read (msg=msg@entry=0x7fffe4007390 [SoupMessage], blocking=blocking@entry=1, cancellable=<optimized out>, error=error@entry=0x7fffea167a40)
at soup-message-io.c:1095
#23 0x00007fffedecef24 in soup_session_send (session=0x555555a3d110 [SoupSession], msg=0x7fffe4007390 [SoupMessage], cancellable=<optimized out>, error=0x0) at soup-session.c:4425
#24 0x00007fffee14445a in gst_soup_http_src_do_request () at /usr/lib64/gstreamer-1.0/libgstsouphttpsrc.so
#25 0x00007fffee1454bf in gst_soup_http_src_create () at /usr/lib64/gstreamer-1.0/libgstsouphttpsrc.so
#26 0x00007ffff723e68f in gst_base_src_get_range (src=src@entry=0x555555a2f6e0 [GstSoupHTTPSrc], offset=offset@entry=41587, length=<optimized out>, buf=buf@entry=0x7fffea167de8) at gstbasesrc.c:2464
#27 0x00007ffff724003f in gst_base_src_loop (pad=0x555555a30050 [GstPad]) at gstbasesrc.c:2740
#28 0x00007ffff6f84971 in gst_task_func (task=0x555555a39170 [GstTask]) at gsttask.c:334
#29 0x00007ffff69ec58e in g_thread_pool_thread_proxy (data=<optimized out>) at gthreadpool.c:307
#30 0x00007ffff69ebb93 in g_thread_proxy (data=0x555555a19850) at gthread.c:784
#31 0x00007ffff645a6ca in start_thread (arg=0x7fffea168700) at pthread_create.c:333
#32 0x00007ffff6194f7f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105
There is a ogg warning seen:
0:00:03.087518497 5699 0x7fd1280779e0 WARN oggdemux gstoggdemux.c:1330:gst_ogg_demux_setup_first_granule:oggdemux0:src_627cf3f7 Failed to read packets off first page
And some basesrc strangeness:
0:00:03.119029801 5699 0x7fd114118a30 WARN basesrc gstbasesrc.c:1633:gst_base_src_perform_seek: duplicate event found 604
0:00:03.254737292 5699 0x7fd114118a30 WARN basesrc gstbasesrc.c:1633:gst_base_src_perform_seek: duplicate event found 604
0:00:03.386847072 5699 0x7fd114118a30 WARN basesrc gstbasesrc.c:1633:gst_base_src_perform_seek: duplicate event found 604
0:00:03.543654085 5699 0x7fd114118a30 WARN basesrc gstbasesrc.c:1633:gst_base_src_perform_seek: duplicate event found 604
Version: 1.10.4