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 681178 - Rapidly switching between internet radio stations results in crash
Rapidly switching between internet radio stations results in crash
Status: RESOLVED FIXED
Product: rhythmbox
Classification: Other
Component: Internet Radio
HEAD
Other Linux
: Normal critical
: ---
Assigned To: RhythmBox Maintainers
RhythmBox Maintainers
: 679584 683477 691566 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2012-08-04 01:33 UTC by Tristian Celestin
Modified: 2014-03-09 07:42 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Stack trace (59.68 KB, text/plain)
2012-08-04 01:33 UTC, Tristian Celestin
  Details
Patch to check whether stream is NULL before acquiring lock (1.03 KB, patch)
2012-08-08 05:37 UTC, Tristian Celestin
committed Details | Review

Description Tristian Celestin 2012-08-04 01:33:26 UTC
Created attachment 220301 [details]
Stack trace

Using Rhythmbox from Git commit 0a3cb152

The radio stations used in the test were:
http://live.str3am.com:2410/wypr.m3u (step 5)
http://wamu.org/streams/live/1/live.m3u (step 7)

Steps to reproduce:
1. Open Rhythmbox.
2. Select Edit->Preferences from the menu
3. Select the "Playback" tab and enable the option "Crossfade between tracks". Ensure the Crossfade Duration is set to 1 second.
4. Select "Radio" from the sidebar. Ensure that two internet radio stations are available. Let the first station in the browser be (A) and the second be (B).
5. Select (A) by double clicking its entry in the browser. The station should start to play.
6. At some point, Rhythmbox will attempt to rebuffer (A). The progress bar at the bottom of the UI will appear, fill, then disappear. Playback will not continue, but Rhythmbox does not indicate that playback has stopped. In particular, the Play/Pause button is still active.
7. From the internet radio browser, select internet radio station (B) by double clicking its entry. Playback should not begin, nor should there be any sign in the ui that the option was indeed selected. The view indicates that (A) is selected.
8. Click the Play/Pause button to deactivate the button. 
9. Click the Play/Pause button to play the station (A).

Expected result:
The internet station selected in step 3 begins to play.

Received result:
A blank dialog appears for about a second, then disappears along with the Rhythmbox application. Rhythmbox segfaults.
Comment 1 Tristian Celestin 2012-08-08 04:41:20 UTC
Waiting for playback to stop while rebuffering (step 6) seems to be unnecessary.

I can only get this bug to trigger while the radio station has been playing for more than a few minutes, though.
Comment 2 Tristian Celestin 2012-08-08 05:22:08 UTC
The segfault comes from rb-player-gst-xfade.c:1853
g_mutex_lock (&stream->lock);
Because stream is NULL.

However, the test for whether stream is NULL doesn't occur until rb-player-gst-xfade.c:1904.


  • #0 g_mutex_get_impl
    at gthread-posix.c line 119
  • #1 g_mutex_lock
    at gthread-posix.c line 208
  • #2 rb_player_gst_xfade_bus_cb
    at rb-player-gst-xfade.c line 1853
  • #3 start_sink
    at rb-player-gst-xfade.c line 2975
  • #4 rb_player_gst_xfade_play
    at rb-player-gst-xfade.c line 3479
  • #5 rb_shell_player_open_playlist_url
    at rb-shell-player.c line 790
  • #6 open_location_thread
    at rb-shell-player.c line 1605
  • #7 g_thread_proxy
    at gthread.c line 801
  • #8 start_thread
    at pthread_create.c line 309
  • #9 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 115

Comment 3 Tristian Celestin 2012-08-08 05:37:15 UTC
Created attachment 220635 [details] [review]
Patch to check whether stream is NULL before acquiring lock
Comment 4 Jonathan Matthew 2012-08-09 21:51:10 UTC
*** Bug 679584 has been marked as a duplicate of this bug. ***
Comment 5 Jonathan Matthew 2012-08-09 22:05:07 UTC
Nice work, pushed as commit f5e8411. Thanks for the patch.
Comment 6 Jonathan Matthew 2012-09-07 09:52:38 UTC
*** Bug 683477 has been marked as a duplicate of this bug. ***
Comment 7 Jonathan Matthew 2014-03-09 07:42:39 UTC
*** Bug 691566 has been marked as a duplicate of this bug. ***