[gstreamer-bugs] [Bug 164069] [clocking] Hang when playing audio file (.wav) with visualization
bugzilla-daemon at bugzilla.gnome.org
bugzilla-daemon at bugzilla.gnome.org
Mon Jan 17 04:14:15 PST 2005
Please DO NOT reply to this by email. All additional comments should be made in
the comments box of this bug report.
http://bugzilla.gnome.org/show_bug.cgi?id=164069
GStreamer | gst-plugins | Ver: 0.3.3
Ronald Bultje changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|totem-gstreamer- |gstreamer-
|maint at gnome.org |bugs at lists.sourceforge.net
Status|UNCONFIRMED |NEW
Component|GStreamer backend |gst-plugins
everconfirmed|0 |1
Product|totem |GStreamer
QAContact| |gstreamer-
| |bugs at lists.sourceforge.net
Summary|Hang and warning in metadata|[clocking] Hang when playing
|test of wave file |audio file (.wav) with
| |visualization
Target Milestone|--- |HEAD
Version|unspecified |0.3.3
------- Additional Comments From Ronald Bultje 2005-01-17 07:14 -------
Which version of gst-plugins is this? If it's CVS, what version? I can play it
with osssink, alsasink and dmix, and I don't get errors. I have fixed one of the
above warnings a few weeks ago.
In totem, it actually does hang, but only with visualization enabled:
Thread 5 (Thread 33622960 (LWP 988)):
#0 0x004107a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1 0x00666922 in pthread_cond_wait@@GLIBC_2.3.2 ()
from /lib/tls/libpthread.so.0
#2 0x00d96817 in gst_queue_chain (pad=0x9a91b90, data=0x9451a68)
at gstqueue.c:704
#3 0x00d92679 in gst_pad_call_chain_function (pad=0x9a91b90, data=0x9451a68)
at gstpad.c:4476
#4 0x00d8feec in gst_pad_push (pad=0x9a61000, data=0x9451a68) at gstpad.c:3287
#5 0x0039800b in gst_visual_chain (pad=0x9a60aa8, _data=0x94519f4)
at visual.c:334
#6 0x00d92679 in gst_pad_call_chain_function (pad=0x9a60aa8, data=0x94519f4)
at gstpad.c:4476
#7 0x00d8feec in gst_pad_push (pad=0x9abb060, data=0x94519f4) at gstpad.c:3287
#8 0x0098b721 in gst_audio_convert_chain (pad=0x9aade38, data=0x94519f4)
at gstaudioconvert.c:267
#9 0x00d92679 in gst_pad_call_chain_function (pad=0x9ab0728, data=0x94519f4)
at gstpad.c:4476
#10 0x00d8feec in gst_pad_push (pad=0x9ae1d08, data=0x94519f4) at gstpad.c:3287
#11 0x00956c1f in gst_tee_chain (pad=0x9ae1d08, _data=0x94519f4)
at gsttee.c:358
#12 0x00d92679 in gst_pad_call_chain_function (pad=0x9a918c0, data=0x94519f4)
---Type <return> to continue, or q <return> to quit---
at gstpad.c:4476
#13 0x00d8feec in gst_pad_push (pad=0x9a90b38, data=0x94519f4) at gstpad.c:3287
#14 0x003e1582 in get_group_schedule_function (argc=0, argv=0x9ac8388)
at gstoptimalscheduler.c:1305
#15 0x003e1038 in schedule_group (group=0x9ac8388)
at gstoptimalscheduler.c:1154
#16 0x003e1241 in gst_opt_scheduler_schedule_run_queue (osched=0x9afec60,
only_group=0x9ac8388) at gstoptimalscheduler.c:1205
#17 0x003e1add in gst_opt_scheduler_get_wrapper (srcpad=0x9a99dd0)
at gstoptimalscheduler.c:1451
#18 0x00d9085d in gst_pad_pull (pad=0x9a3f8f8) at gstpad.c:3342
#19 0x00379dc6 in gst_alsa_sink_loop (element=0x9a40da0) at gstalsasink.c:382
#20 0x003e165b in loop_group_schedule_function (argc=0, argv=0x9aaa068)
at gstoptimalscheduler.c:1332
#21 0x003e1038 in schedule_group (group=0x9aaa068)
at gstoptimalscheduler.c:1154
#22 0x003e1241 in gst_opt_scheduler_schedule_run_queue (osched=0x9afec60,
only_group=0x0) at gstoptimalscheduler.c:1205
#23 0x003e1370 in schedule_chain (chain=0x9ac5820)
at gstoptimalscheduler.c:1258
#24 0x003e4504 in gst_opt_scheduler_iterate (sched=0x9afec60)
at gstoptimalscheduler.c:2629
#25 0x00d9afe2 in gst_scheduler_iterate (sched=0x9afec60) at gstscheduler.c:738
---Type <return> to continue, or q <return> to quit---
#26 0x00d754ad in gst_bin_iterate_func (bin=0x9b018a8) at gstbin.c:1220
#27 0x00dada73 in gst_marshal_BOOLEAN__VOID (closure=0x9446e60,
return_value=0x2010720, n_param_values=1, param_values=0xfffffffc,
invocation_hint=0x2010748, marshal_data=0xd75424) at gstmarshal.c:509
#28 0x0067aef9 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#29 0x0067ac66 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#30 0x0068beb5 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#31 0x0068b2ca in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#32 0x0068b776 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#33 0x00d75650 in gst_bin_iterate (bin=0x9b018a8) at gstbin.c:1280
#34 0x00da2bc9 in gst_thread_main_loop (arg=0x9b018a8) at gstthread.c:671
#35 0x07c0fb3d in g_static_private_free () from /usr/lib/libglib-2.0.so.0
#36 0x0066398c in start_thread () from /lib/tls/libpthread.so.0
#37 0x004e47da in clone () from /lib/tls/libc.so.6
Thread 4 (Thread 151579568 (LWP 987)):
#0 0x004107a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1 0x00669986 in __nanosleep_nocancel () from /lib/tls/libpthread.so.0
#2 0x07c11edc in g_usleep () from /usr/lib/libglib-2.0.so.0
#3 0x0908e0c8 in ?? ()
#4 0x00000000 in ?? ()
Thread 3 (Thread 45476784 (LWP 986)):
---Type <return> to continue, or q <return> to quit---
#0 0x004107a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1 0x00666922 in pthread_cond_wait@@GLIBC_2.3.2 ()
from /lib/tls/libpthread.so.0
#2 0x00d96817 in gst_queue_chain (pad=0x9a90910, data=0x9450ffc)
at gstqueue.c:704
#3 0x00d92679 in gst_pad_call_chain_function (pad=0x9a90910, data=0x9450ffc)
at gstpad.c:4476
#4 0x00d8feec in gst_pad_push (pad=0x9a90648, data=0x9450ffc) at gstpad.c:3287
#5 0x00be1430 in gst_stream_selector_chain (pad=0x9a91078, data=0x9450ffc)
at gststreamselector.c:279
#6 0x00d92679 in gst_pad_call_chain_function (pad=0x9a91078, data=0x9450ffc)
at gstpad.c:4476
#7 0x00d8feec in gst_pad_push (pad=0x9a8f568, data=0x9450ffc) at gstpad.c:3287
#8 0x009727ed in gst_wavparse_loop (element=0x9a8e1d0) at gstwavparse.c:753
#9 0x003e165b in loop_group_schedule_function (argc=0, argv=0x9a8e608)
at gstoptimalscheduler.c:1332
#10 0x003e1038 in schedule_group (group=0x9a8e608)
at gstoptimalscheduler.c:1154
#11 0x003e1241 in gst_opt_scheduler_schedule_run_queue (osched=0x9a667a8,
only_group=0x0) at gstoptimalscheduler.c:1205
#12 0x003e1370 in schedule_chain (chain=0x9a79798)
at gstoptimalscheduler.c:1258
#13 0x003e4504 in gst_opt_scheduler_iterate (sched=0x9a667a8)
---Type <return> to continue, or q <return> to quit---
at gstoptimalscheduler.c:2629
#14 0x00d9afe2 in gst_scheduler_iterate (sched=0x9a667a8) at gstscheduler.c:738
#15 0x00d754ad in gst_bin_iterate_func (bin=0x9a63360) at gstbin.c:1220
#16 0x00dada73 in gst_marshal_BOOLEAN__VOID (closure=0x9446e60,
return_value=0x2b5e720, n_param_values=1, param_values=0xfffffffc,
invocation_hint=0x2b5e748, marshal_data=0xd75424) at gstmarshal.c:509
#17 0x0067aef9 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#18 0x0067ac66 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#19 0x0068beb5 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#20 0x0068b2ca in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#21 0x0068b776 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#22 0x00d75650 in gst_bin_iterate (bin=0x9a63360) at gstbin.c:1280
#23 0x00da2bc9 in gst_thread_main_loop (arg=0x9a63360) at gstthread.c:671
#24 0x07c0fb3d in g_static_private_free () from /usr/lib/libglib-2.0.so.0
#25 0x0066398c in start_thread () from /lib/tls/libpthread.so.0
#26 0x004e47da in clone () from /lib/tls/libc.so.6
Thread 2 (Thread 105065392 (LWP 985)):
#0 0x004107a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1 0x004db057 in poll () from /lib/tls/libc.so.6
#2 0x07bf6876 in g_main_loop_get_context () from /usr/lib/libglib-2.0.so.0
#3 0x07bf5e70 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#4 0x07bf6493 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
---Type <return> to continue, or q <return> to quit---
#5 0x07c88cd2 in link_thread_io_context () from /usr/lib/libORBit-2.so.0
#6 0x07c0fb3d in g_static_private_free () from /usr/lib/libglib-2.0.so.0
#7 0x0066398c in start_thread () from /lib/tls/libpthread.so.0
#8 0x004e47da in clone () from /lib/tls/libc.so.6
Thread 1 (Thread -151141056 (LWP 982)):
#0 0x004107a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1 0x004db057 in poll () from /lib/tls/libc.so.6
#2 0x07bf6876 in g_main_loop_get_context () from /usr/lib/libglib-2.0.so.0
#3 0x07bf5e70 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#4 0x07bf6493 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#5 0x00f7f843 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#6 0x09b03880 in ?? ()
#7 0x09668e30 in ?? ()
#8 0x096660f8 in ?? ()
#9 0xfee42eb8 in ?? ()
#10 0x09b03880 in ?? ()
#11 0x00000000 in ?? ()
Thread 4 is the video, thread 5 is the visualization thread (plus audio) and
thread 3 is the decoder. Seems like a deadlock, probably wrong timestamps.
LOG (0x9a79a50 - 307211:47:39.543223000) xvimagesink( 1024)
xvimagesink.c(1405):gst_xvimagesink_chain:<xvimagesink0> clock wait:
0:00:00.100000000
DEBUG (0x9a79a50 - 307211:47:39.543674000) alsa( 1024)
gstalsaclock.c(193):gst_alsa_clock_wait:<alsasinkclock> real_target
307211:47:39.335004000 target 307211:47:39.335004000 now 307211:47:39.235004000
LOG (0x9fa18d8 - 307211:47:39.583367000) alsa( 1024)
gstalsasink.c(384):gst_alsa_sink_loop:<alsasink0> pulled data 0x98d66a0 from pad 0
DEBUG (0x9fa18d8 - 307211:47:39.583645000) alsa( 1024)
gstalsasink.c(163):gst_alsa_sink_flush_one_pad:<alsasink0> flushing pad 0
DEBUG (0x9fa18d8 - 307211:47:39.583751000) alsa( 1024)
gstalsasink.c(167):gst_alsa_sink_flush_one_pad:<alsasink0> unreffing gst data
0x98d66a0
LOG (0x9fa18d8 - 307211:47:39.827302000) alsa( 1024)
gstalsasink.c(384):gst_alsa_sink_loop:<alsasink0> pulled data 0x98d66a0 from pad 0
DEBUG (0x9fa18d8 - 307211:47:39.919839000) alsa( 1024)
gstalsasink.c(163):gst_alsa_sink_flush_one_pad:<alsasink0> flushing pad 0
DEBUG (0x9fa18d8 - 307211:47:39.920196000) alsa( 1024)
gstalsasink.c(167):gst_alsa_sink_flush_one_pad:<alsasink0> unreffing gst data
0x98d66a0
LOG (0x9fa18d8 - 307211:47:40.037103000) alsa( 1024)
gstalsasink.c(384):gst_alsa_sink_loop:<alsasink0> pulled data 0x98d66a0 from pad 0
DEBUG (0x9fa18d8 - 307211:47:40.037706000) alsa( 1024)
gstalsasink.c(163):gst_alsa_sink_flush_one_pad:<alsasink0> flushing pad 0
DEBUG (0x9fa18d8 - 307211:47:40.038033000) alsa( 1024)
gstalsasink.c(167):gst_alsa_sink_flush_one_pad:<alsasink0> unreffing gst data
0x98d66a0
LOG (0x9fa18d8 - 307211:47:40.167486000) alsa( 1024)
gstalsasink.c(384):gst_alsa_sink_loop:<alsasink0> pulled data 0x98d66a0 from pad 0
DEBUG (0x9fa18d8 - 307211:47:40.250631000) alsa( 1024)
gstalsasink.c(163):gst_alsa_sink_flush_one_pad:<alsasink0> flushing pad 0
DEBUG (0x9fa18d8 - 307211:47:40.251013000) alsa( 1024)
gstalsasink.c(167):gst_alsa_sink_flush_one_pad:<alsasink0> unreffing gst data
0x98d66a0
This is inside alsa's context. This basically means that alsa's gst_pad_pull
triggered a push in tee on the other pad, which waits on an update in alsa.
Making audio a thread doesn't solve it, since the deadlock is still there, but
on a queue boundary (I actually tested that...).
It gets stuck in the wait loop in gstalsaclock.c:gst_alsa_clock_wait, with:
LOG (0x9546a50 - 307212:09:40.752929000) alsa( 3471)
gstalsaclock.c(200):gst_alsa_clock_wait: 1105963772770298000 <
1105963772870298000, 0 < 1105963772770298000
The weird thing is that the audio clock is actually already at 0.9s, while we're
still waiting for 0.1s. I don't know why that happens. I think alsaclock should
have a max. wait time of maybe 1.5 * diff, because this is a deadlock. Besides
that, we (I) should figure out why the clock is not updated properly...
GStreamer bug, so re-assigning
------- You are receiving this mail because: -------
You are the assignee for the bug.
You are the QA contact for the bug.
More information about the Gstreamer-bugs
mailing list