After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 120283 - problems with esdsink at end of song
problems with esdsink at end of song
Status: VERIFIED INCOMPLETE
Product: GStreamer
Classification: Platform
Component: dont know
0.6.3
Other Linux
: High critical
: 0.3.3
Assigned To: RhythmBox Maintainers
RhythmBox Maintainers
Depends on:
Blocks:
 
 
Reported: 2003-08-19 21:44 UTC by Dafydd Harries
Modified: 2009-08-15 18:40 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Backtrace (3.05 KB, text/plain)
2003-08-28 19:43 UTC, Dafydd Harries
Details

Description Dafydd Harries 2003-08-19 21:44:22 UTC
Loaded rhythmbox, added one song to the library, played it. Rhythmbox
segfaulted at the end of the song. Below is a backtrace.
 

Thread 5 (Thread 49156 (LWP 29936))

  • #0 mallopt
    from /lib/libc.so.6
  • #1 calloc
    from /lib/libc.so.6
  • #2 g_malloc0
    at gmem.c line 153
  • #3 gst_event_new
    at gstevent.c line 132
  • #4 gst_event_new_seek
    at gstevent.c line 163
  • #5 gst_bytestream_seek
    at bytestream.c line 467
  • #6 gst_vorbisfile_loop
    at vorbisfile.c line 486
  • #7 loop_group_schedule_function
    at gstoptimalscheduler.c line 922
  • #8 schedule_group
    at gstoptimalscheduler.c line 779
  • #9 gst_opt_scheduler_schedule_run_queue
    at gstoptimalscheduler.c line 810
  • #10 gst_opt_scheduler_get_wrapper
    at gstoptimalscheduler.c line 1021
  • #11 gst_pad_pull
    at gstpad.c line 2325
  • #12 gst_spider_identity_dumb_loop
    at gstspideridentity.c line 384
  • #13 loop_group_schedule_function
    at gstoptimalscheduler.c line 922
  • #14 schedule_group
    at gstoptimalscheduler.c line 779
  • #15 gst_opt_scheduler_schedule_run_queue
    at gstoptimalscheduler.c line 810
  • #16 schedule_chain
    at gstoptimalscheduler.c line 851
  • #17 gst_opt_scheduler_iterate
    at gstoptimalscheduler.c line 1825
  • #18 gst_scheduler_iterate
    at gstscheduler.c line 732
  • #19 gst_bin_iterate_func
    at gstbin.c line 902
  • #20 gst_bin_iterate
    at gstbin.c line 947
  • #21 gst_thread_main_loop
    at gstthread.c line 723
  • #22 g_thread_create_proxy
    at gthread.c line 551
  • #23 pthread_start_thread
    from /lib/libpthread.so.0
  • #24 pthread_start_thread_event
    from /lib/libpthread.so.0
  • #25 clone
    from /lib/libc.so.6

Comment 1 Dafydd Harries 2003-08-19 22:11:07 UTC
Another backtrace, as requested. This time, I played around with
pausing/unpausing and seeking the track. It was fine until I seeked to
the end of the track.

Thread 1 (Thread 16384 (LWP 647))

  • #0 g_hash_table_insert
    at ghash.c line 192
  • #1 gdk_event_new
    at gdkevents.c line 295
  • #2 gtk_container_propagate_expose
    at gtkcontainer.c line 2395
  • #3 gtk_container_expose_child
    at gtkcontainer.c line 2291
  • #4 gtk_box_forall
    at gtkbox.c line 700
  • #5 gtk_container_forall
    at gtkcontainer.c line 1256
  • #6 gtk_container_expose
    at gtkcontainer.c line 2314
  • #7 _gtk_marshal_BOOLEAN__BOXED
    at gtkmarshalers.c line 82
  • #8 g_type_class_meta_marshal
    at gclosure.c line 514
  • #9 g_closure_invoke
    at gclosure.c line 437
  • #10 signal_emit_unlocked_R
    at gsignal.c line 2860
  • #11 g_signal_emit_valist
    at gsignal.c line 2564
  • #12 g_signal_emit
    at gsignal.c line 2612
  • #13 gtk_widget_event_internal
    at gtkwidget.c line 3269
  • #14 gtk_container_propagate_expose
    at gtkcontainer.c line 2403
  • #15 gtk_container_expose_child
    at gtkcontainer.c line 2291
  • #16 bonobo_dock_forall
    at bonobo-dock.c line 660
  • #17 gtk_container_forall
    at gtkcontainer.c line 1256
  • #18 gtk_container_expose
    at gtkcontainer.c line 2314
  • #19 _gtk_marshal_BOOLEAN__BOXED
    at gtkmarshalers.c line 82
  • #20 g_type_class_meta_marshal
    at gclosure.c line 514
  • #21 g_closure_invoke
    at gclosure.c line 437
  • #22 signal_emit_unlocked_R
    at gsignal.c line 2860
  • #23 g_signal_emit_valist
    at gsignal.c line 2564
  • #24 g_signal_emit
    at gsignal.c line 2612
  • #25 gtk_widget_event_internal
    at gtkwidget.c line 3269
  • #26 gtk_container_propagate_expose
    at gtkcontainer.c line 2403
  • #27 gtk_container_expose_child
    at gtkcontainer.c line 2291
  • #28 gtk_box_forall
    at gtkbox.c line 700
  • #29 gtk_container_forall
    at gtkcontainer.c line 1256
  • #30 gtk_container_expose
    at gtkcontainer.c line 2314
  • #31 _gtk_marshal_BOOLEAN__BOXED
    at gtkmarshalers.c line 82
  • #32 g_type_class_meta_marshal
    at gclosure.c line 514
  • #33 g_closure_invoke
    at gclosure.c line 437
  • #34 signal_emit_unlocked_R
    at gsignal.c line 2860
  • #35 g_signal_emit_valist
    at gsignal.c line 2564
  • #36 g_signal_emit
    at gsignal.c line 2612
  • #37 gtk_widget_event_internal
    at gtkwidget.c line 3269
  • #38 gtk_container_propagate_expose
    at gtkcontainer.c line 2403
  • #39 gtk_container_expose_child
    at gtkcontainer.c line 2291
  • #40 gtk_bin_forall
    at gtkbin.c line 164
  • #41 gtk_container_forall
    at gtkcontainer.c line 1256
  • #42 gtk_container_expose
    at gtkcontainer.c line 2314
  • #43 gtk_window_expose
    at gtkwindow.c line 5407
  • #44 _gtk_marshal_BOOLEAN__BOXED
    at gtkmarshalers.c line 82
  • #45 g_type_class_meta_marshal
    at gclosure.c line 514
  • #46 g_closure_invoke
    at gclosure.c line 437
  • #47 signal_emit_unlocked_R
    at gsignal.c line 2860
  • #48 g_signal_emit_valist
    at gsignal.c line 2564
  • #49 g_signal_emit
    at gsignal.c line 2612
  • #50 gtk_widget_event_internal
    at gtkwidget.c line 3269
  • #51 gtk_main_do_event
    at gtkmain.c line 1462
  • #52 gdk_window_process_updates_internal
    at gdkwindow.c line 2136
  • #53 gdk_window_process_all_updates
    at gdkwindow.c line 2171
  • #54 gtk_container_idle_sizer
    at gtkcontainer.c line 1108
  • #55 g_idle_dispatch
    at gmain.c line 3242
  • #56 g_main_dispatch
    at gmain.c line 1721
  • #57 g_main_context_dispatch
    at gmain.c line 2269
  • #58 g_main_context_iterate
    at gmain.c line 2350
  • #59 g_main_loop_run
    at gmain.c line 2570
  • #60 bonobo_main
    at bonobo-main.c line 294
  • #61 main
    at main.c line 136
  • #0 mallopt
    from /lib/libc.so.6

Comment 2 Colin Walters 2003-08-26 15:56:30 UTC
What version of GStreamer are you using?
Comment 3 Dafydd Harries 2003-08-28 15:05:01 UTC
gst-launch --gst-version reports 0.6.2.1.
Comment 4 Dafydd Harries 2003-08-28 15:26:17 UTC
Something else I've just noticed: at the end of the song, a message is
printed such as

Xlib: unexpected async reply (sequence 0x623b)!

The specific hex value changes in between different invocations.
Comment 5 Bastien Nocera 2003-08-28 15:38:22 UTC
Welcome to XInitThreads land!
Comment 6 Colin Walters 2003-08-28 17:36:24 UTC
Generally that means two threads accessed GDK at the same time. 
However I am not aware of any place we aren't locking GDK.

Anyways, Dafydd - how easily can you reproduce this error?  Every
time?  Once a day?  Once a week?

And Bastien - what do you mean by the XInitThreads reference?  We
still can't use GDK from multiple threads, can we? 
Comment 7 Dafydd Harries 2003-08-28 17:58:12 UTC
This bug has reliably manifested every single time I've tried to
reproduce it.
Comment 8 Bastien Nocera 2003-08-28 18:06:51 UTC
Nope, but I would advise that you launch XInitThreads if you're going
to manipulate GDK from 2 different threads.
Comment 9 Colin Walters 2003-08-28 18:23:08 UTC
Ok Dafydd, are you using a GNU/Linux system?  If so could you try
launching rhythmbox like this:

MALLOC_CHECK_=2 /path/to/rhythmbox

Also, your two backtraces are different, which is not unusual for a
race condition.  What would help is to see a few more backtraces (if
they're also different) so we can try to track down a pattern.
Comment 10 Dafydd Harries 2003-08-28 19:41:37 UTC
I ran rhythmbox with MALLOC_CHECK_=2 and didn't notice any difference.

Attaching an extra backtrace.
Comment 11 Dafydd Harries 2003-08-28 19:43:27 UTC
Created attachment 19592 [details]
Backtrace
Comment 12 Brian Kerrick Nickel 2003-09-02 03:06:23 UTC
With GStreamer 6.3 + rhythmbox CVS, I have a similar issue, but I
don't always suffer end of song crashes.

At the end of a song, CPU usage jumps to 100% and the progress meter
stays at the end.

When I switch songs, I get:
(rhythmbox:25183): GStreamer-CRITICAL **: file gstscheduler.c: line
179 (gst_scheduler_pad_unlink): assertion `GST_IS_SCHEDULER (sched)'
failed
 
(rhythmbox:25183): GStreamer-CRITICAL **: file gstscheduler.c: line
179 (gst_scheduler_pad_unlink): assertion `GST_IS_SCHEDULER (sched)'
failed
Comment 13 Francesco Gigli 2003-09-17 23:27:07 UTC
even here i've the same results: it hangs at the end at the end of the
song played every time.
it's even possible that the problem lays on gstreamer as the same
happens with gst-player.
how to reproduce:
1) open gst-player(-gtk)
2) add a two songs (ogg, in my case) and press play
3) seek to "near the end" (or listen to end)
4) the music will finish
5) the playng time counter still count, un the shell i see:
"audio_queue: waiting for the app to restart source pad elements" the
other track is still on the playlist.
6) actually the counter says "03:32 / 02:55" and still count.

versions:
GStreamer Core Library version 0.6.3
GST Player 0.6.0
RhythmBox 0.5.3
Comment 14 Colin Walters 2003-09-18 05:41:26 UTC
If this happens with gst-player too, it would be a GStreamer bug then.
Comment 15 Francesco Gigli 2003-09-21 14:46:10 UTC
the bug is assigned to rhythmbox mantainer but has product GStreamer,
is it ok?
Comment 16 Allison Karlitskaya (desrt) 2003-09-22 21:35:50 UTC
just wondering.  what gstreamer output sink is everyone using?

someone in #rb just got the end-of-song crash to go away by switching
from esdsink to osssink....
Comment 17 jason 2003-10-01 20:03:37 UTC
After reading desrt's comment, I spent some time, and confirmed that
my system, which was expriencing the same problem with Rhythmbox
freezing at the end of the first song, was using esdsink.

So I went in and setup ALSA, and shut off ESD, and switched GStreamer
to use the osssink, and now Rhythmbox no longer crashes.  This appears
(from my point of view), and issue with ESD, or at least between ESD
and GStreamer.
Comment 18 David Schleef 2004-03-18 03:32:08 UTC
GStreamer and esdsink in particular have gone through a lot of changes
since 0.6.  It's highly likely that this bug has been fixed, and
should have been closed a long time ago.  However, could you attempt
to reproduce it, and if you can, reopen this bug?  Thanks.  (marking
as NEEDINFO)
Comment 19 Christian Fredrik Kalager Schaller 2004-12-07 23:44:04 UTC
Nothing heard, so moving to closed.