[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