GNOME Bugzilla – Bug 605505
"Status icon" plugin causes severe lag when switching songs
Last modified: 2010-06-22 15:58:16 UTC
A significant fraction (between 1/2 and 1/8) of the times when rhythmbox switches songs (either automatically, or manually through the GUI or global keyboard shortcuts), rhythmbox hangs and either - the UI goes blank, and I need to just sit it out; or - it moves onto the song without playing it, and I can fix this by clicking twice onto the playback slider. (once doesn't work). This behaviour hadn't always occurred, so I couldn't figure out for ages what was causing it. Then I had an idea of disabling the plugins, and seeing if this behaviour still occurred. It didn't. So by trial-and-error, I eventually worked out that the "status icon" plugin is the culprit. I don't know if this is reproducible on other machines; however, on my computer: - I have about 5000 songs in the library, and about 25 playlists. - Rhythmbox 0.12.6 from Debian When "status icon" plugin is disabled (and after restarting rhythmbox), I can switch songs about 50 times in succession without any significant lag. (50 times is all I tried before I got bored.) When "status icon" plugin is enabled, if I keep switching songs, at some point (well before 50 switches), the aforementioned lag will occur. I tried this with several (but not all possible) different settings of the plugin config; results were same for each.
I can't reproduce this. If you could provide a stack trace from when rhythmbox has hung, that would probably help.
This is when rhythmbox starts up (with "start icon" enabled): libnotify-Message: GetCapabilities call failed: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. When the UI hangs, this pops up when it unhangs: (rhythmbox:24627): Rhythmbox-WARNING **: Failed to send notification ([song name]): Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. `pkill rhythmbox` still works during this time (no need for -9) will get a stack trace when i figure out how...
and yes i do have notification-daemon installed. i also tried it with notification-daemon-xfce; same results.
Do other notifications show up properly? What happens if you run 'notify-send foo'?
i don't have the 'notify-send' command - which package has it? i've figured out that to "fix" the behaviour temporarily, kill the notification-daemon[1]. rhythmbox will then automatically spawn a new one, which is responsive. i'm still trying to figure out a reliable way of triggering it, though. i can sometimes trigger it by running "notification-properties" and clicking the "preview" button, which will sometimes hang notification-properties, and then afterwards rhythmbox will hang when trying to display a notification. [1] for some stupid reason "pkill notification-daemon" doesn't work due to the -, and \- doesn't work ether
right, i think i've got it: 0. kill any existing "notification-daemon" process 1. start rhythmbox with "status icon" plugin enabled, with config option "display notifications = always" 2. play songs and switch through a few. rhythmbox should spawn a new "notification-daemon" and notifications should appear. 3. start "notification-properties" **from the terminal**. 4. click "preview". this will either display a notification, or hang. 4.1. if it doesn't hang, close the program and repeat from (3). 4.2. if it does hang, terminate it with ctrl-C. 5. switch songs in rhythmbox. it should now hang. 6. if you kill the "notification-daemon", rhythmbox will immediately unhang and play the next song, spawn a new daemon and display a notification.
notify-send is in the libnotify-bin package.
seems like you can do steps 3 to 4.2 without rhythmbox running at all, and it will still hang when you start it up (i guess because it's using the same daemon that's broken). i suppose this is more of a notification-daemon bug, then. it would be nice if rhythmbox could detect the broken ones and automatically restart them, but i realise this is somewhat problematic and out of the scope of this program...
That would be implemented in libnotify anyway. Anyway, you should file a bug about this in the notification-daemon bug tracking system here: http://galago-project.org/
Could be a duplicate of bug #622409