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 500498 - rhythmbox locks up with PulseAudio
rhythmbox locks up with PulseAudio
Status: RESOLVED NOTGNOME
Product: rhythmbox
Classification: Other
Component: general
0.11.x
Other Linux
: Normal critical
: ---
Assigned To: RhythmBox Maintainers
RhythmBox Maintainers
Depends on:
Blocks:
 
 
Reported: 2007-11-29 19:48 UTC by Max Kanat-Alexander
Modified: 2007-11-29 22:15 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Max Kanat-Alexander 2007-11-29 19:48:07 UTC
I'm using Rhythmbox on Fedora 8, and it locks up about twice a day. Here's a stack trace of the last lock-up, with full debugging symbols installed:

Thread 1 (Thread 46912496395136 (LWP 4300))

  • #0 __lll_lock_wait
    from /lib64/libpthread.so.0
  • #1 _L_lock_102
    from /lib64/libpthread.so.0
  • #2 pthread_mutex_lock
    from /lib64/libpthread.so.0
  • #3 gst_object_get_parent
    at gstobject.c line 841
  • #4 gst_object_get_path_string
    at gstobject.c line 1086
  • #5 gst_element_message_full
    at gstelement.c line 1647
  • #6 gst_pulsesink_reset
    at pulsesink.c line 526
  • #7 gst_audioringbuffer_pause
    at gstaudiosink.c line 459
  • #8 gst_ring_buffer_pause_unlocked
    at gstringbuffer.c line 878
  • #9 gst_ring_buffer_pause
    at gstringbuffer.c line 918
  • #10 gst_base_audio_sink_change_state
    at gstbaseaudiosink.c line 1329
  • #11 gst_element_change_state
    at gstelement.c line 2410
  • #12 gst_element_set_state_func
    at gstelement.c line 2360
  • #13 gst_bin_change_state_func
    at gstbin.c line 1925
  • #14 ??
    from /usr/lib64/gstreamer-0.10/libgstautodetect.so
  • #15 gst_element_change_state
    at gstelement.c line 2410
  • #16 gst_element_set_state_func
    at gstelement.c line 2360
  • #17 gst_bin_change_state_func
    at gstbin.c line 1925
  • #18 gst_element_change_state
    at gstelement.c line 2410
  • #19 gst_element_set_state_func
    at gstelement.c line 2360
  • #20 gst_bin_change_state_func
    at gstbin.c line 1925
  • #21 ??
    from /usr/lib64/gstreamer-0.10/libgstgconfelements.so
  • #22 ??
    from /usr/lib64/gstreamer-0.10/libgstgconfelements.so
  • #23 gst_element_change_state
    at gstelement.c line 2410
  • #24 gst_element_set_state_func
    at gstelement.c line 2360
  • #25 gst_bin_change_state_func
    at gstbin.c line 1925
  • #26 gst_element_change_state
    at gstelement.c line 2410
  • #27 gst_element_set_state_func
    at gstelement.c line 2360
  • #28 gst_bin_change_state_func
    at gstbin.c line 1925
  • #29 gst_element_change_state
    at gstelement.c line 2410
  • #30 gst_element_set_state_func
    at gstelement.c line 2360
  • #31 gst_bin_change_state_func
    at gstbin.c line 1925
  • #32 gst_element_change_state
    at gstelement.c line 2410
  • #33 gst_element_set_state_func
    at gstelement.c line 2360
  • #34 gst_bin_change_state_func
    at gstbin.c line 1925
  • #35 gst_pipeline_change_state
    at gstpipeline.c line 466
  • #36 gst_play_base_bin_change_state
    at gstplaybasebin.c line 2592
  • #37 gst_play_bin_change_state
    at gstplaybin.c line 1821
  • #38 gst_element_change_state
    at gstelement.c line 2410
  • #39 gst_element_set_state_func
    at gstelement.c line 2360
  • #40 rb_player_gst_close
    at rb-player-gst.c line 873
  • #41 rb_player_gst_open
    at rb-player-gst.c line 744
  • #42 rb_shell_player_set_playing_entry
    at rb-shell-player.c line 1383
  • #43 rb_shell_player_do_next_internal
    at rb-shell-player.c line 1879
  • #44 rb_shell_player_handle_eos_unlocked
    at rb-shell-player.c line 731
  • #45 rb_shell_player_handle_eos
    at rb-shell-player.c line 770
  • #46 IA__g_closure_invoke
    at gclosure.c line 490
  • #47 signal_emit_unlocked_R
    at gsignal.c line 2440
  • #48 IA__g_signal_emit_valist
    at gsignal.c line 2199
  • #49 IA__g_signal_emit
    at gsignal.c line 2243
  • #50 rb_player_gst_bus_cb
    at rb-player-gst.c line 441
  • #51 gst_bus_source_dispatch
    at gstbus.c line 779
  • #52 IA__g_main_context_dispatch
    at gmain.c line 2061
  • #53 g_main_context_iterate
    at gmain.c line 2694
  • #54 IA__g_main_loop_run
    at gmain.c line 2898
  • #55 gtk_main
    from /usr/lib64/libgtk-x11-2.0.so.0
  • #56 main
    at main.c line 327
  • #0 __lll_lock_wait
    from /lib64/libpthread.so.0

Comment 1 Max Kanat-Alexander 2007-11-29 19:50:00 UTC
For what it's worth:

* PulseAudio doesn't crash or lock up at the same time, that I know of.
* Rhythmbox still responds to a SIGTERM, I don't have to SIGKILL it.
* The icon appears in the system tray for a little while, but half of it is 
  cut off. Eventually it disappears.
Comment 2 Jonathan Matthew 2007-11-29 22:15:47 UTC
This is a bug in gst-pulse.  Apparently you can't emit error messages from an audio sink reset method, because the base audio sink's state change function holds the object lock, and building the error message involves taking that same lock.